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
。是否有任何其他运算符或查询更改可以从用户表中检索所有5行?
答案 0 :(得分:3)
FIND_IN_SET()
函数在逗号分隔列表中搜索值。将其与JOIN
相结合,你应该得到你想要的东西:
SELECT *
FROM users
JOIN MainPage ON FIND_IN_SET(uid, doctors)
WHERE Valid = 1;
仅供参考,这是设计表格的错误方法。应在单独的行上定义每个连接。如果它是多对多关系,则需要一个带有复合密钥的单独表。