SELECT * FROM users WHERE uid IN (SELECT doctors FROM MainPage WHERE Valid=1)


用户表uid datatype=INT,主页表医生datatype=text的值为1,2,3,4,5

当我运行上面的查询时,只会得到1行,用于uid=1。是否有其他运算符或查询更改可以从users表检索所有5行?

最佳答案

FIND_IN_SET()函数在逗号分隔的列表中搜索值。将其与JOIN结合使用,您将获得所需的内容:

SELECT *
  FROM users
  JOIN MainPage ON FIND_IN_SET(uid, doctors)
 WHERE Valid = 1;


仅供参考,这是设计表格的错误方法。每个连接都应在单独的行上定义。如果是多对多关系,则需要带有复合键的单独表。

关于mysql - 一个字符串上的MySql IN运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41368550/

10-14 18:53