当前位置: 首页 > 知识库问答 >
问题:

mysql - 问一个IN相关的查询方法?

习胤运
2023-06-26

数据库表
Project

id name user_id
1 跳远 1,2,3,4,6,8,12....
2 跳绳 21,43,13,14,26,38,92....

字段user_id保存着用户表user中的id

现在做了一个管理系统,用户登录进来的时候系统会保存该用户的id
然后去查询该用户参加比赛的项目列表,如果参加了跳绳项目,就显示出跳绳选项。
第一个想到的就是先循环出project这个表,然后看看这个用户id是否在这行user_id字段中?
select * from project where $this->auth->id in user_id......
结果发现不能这样写[$this->auth->id这个位置应该是user_id,前后颠倒],求解决方法

共有1个答案

伯俊弼
2023-06-26

如果不改变现状的话,有两种方法使用
1.FIND_IN_SET:例如查user_id为21的话,find_in_set(21,user_id)
2.Like:例如查user_id为21的话,user_id like '21,%' or user_id like '%,21' or user_id like '%,21,%' or user_id=21

 类似资料:
  • 问题内容: 我很好奇为何应该比更快地执行。 当比尔·卡尔文提出一个要点时,我正在回答一个问题。当您使用它时,它使用相关子查询(依赖子查询),而IN()仅使用子查询。 解释显示,并且两者都使用了一个依赖子查询,并且都只使用了一个子查询..所以我很好奇关联子查询如何比子查询更快? 我以前使用过EXISTS,它的执行速度比IN快,这就是我感到困惑的原因。 这是带有说明的SQLFIDDLE 一些问题 在上

  • 问题内容: 我想运行一个简单的查询,以抛出所有其他表()的列中不存在主体列值的行。 我尝试使用: 而是抛出语法错误。Google搜索使我进入了一个论坛,那里的人们说MySQL不支持,因此需要使用一些极其复杂的东西。这是真的?还是我犯了一个可怕的错误? 问题答案: 要使用IN,您必须有一个set,请改用以下语法:

  • 问题内容: 我有这个Mysql查询,它的工作原理: 结果是: 它可以正确执行,但仅当我将所需的ID硬编码到查询中时(37)。我希望它适用于m3allem表中的所有条目,因此我尝试这样做: 我得到一个错误: “ where子句”中的未知列“ m.id” 为什么?从MySql手册中: 所以…当子查询在SELECT部分​​中时,这不起作用吗?我什么都没读。 有人知道吗?我该怎么办?我花了很长时间来构建此

  • 问题内容: 我有一个字符串中的ID列表,并且想使用Hibernate来获取具有这些ID的行。是一个Hibernate / JPA实体(对不起,如果我在这里混淆了命名)。 我的代码是: 但这失败了: 如何使零件工作?谢谢。 问题答案: JPQL查询的语法不正确。两种使用(带有位置参数): 或(使用命名参数): 以下是JPA 1.0规范中有关参数的相关部分: 4.6.4.1位置参数 以下规则适用于位置

  • 问题内容: 以下两个查询是子查询。两者相同,都对我有效。但是问题是方法1的查询大约需要10秒才能执行,而方法2的查询不到1秒。 我能够将方法1的查询转换为方法2,但是我不了解查询中正在发生什么。我一直想自己弄清楚。我真的很想了解以下两个查询之间的区别是什么,以及如何获得性能提升?它背后的逻辑是什么? 我是这些高级技术的新手。我希望有人能在这里帮助我。考虑到我阅读的文档并没有给我任何提示。 方法1:

  • 有ci_trail表,字段为:id, uid(用户id), address(地址), create_time 记录人的定位轨迹,此表大概有100w条数据。想查询每个人最新的一条地址信息。使用如下sql: 查询计划如下图: 可见进行了全表扫描,查询效率很低,请问这种情况应该如何优化sql? 已解决 方案1: 方案2: 先将子查询中的id查询出来,然后将id的结果集逗号隔开填充到in中。因为in的内容