任何人都知道为什么这不起作用:
SELECT clients_id FROM clients WHERE 34 IN (clients_groups)
我将客户端组ID存储在文本列'clients_groups'中为34,35,42等。当clients_groups中只有一个值时,该语句正常工作,否则返回'not found'。
答案 0 :(得分:6)
您想要FIND_IN_SET
:
SELECT clients_id
FROM clients
WHERE FIND_IN_SET('34', clients_groups)
我还建议您考虑规范化您的数据库。您可以使用单独的表来存储客户端和组之间的关系。
答案 1 :(得分:1)
这不是IN的工作原理。 IN子句接受要比较的文字值列表,或子查询中的行集。根据你的需要,你可以使用LIKE:
SELECT clients_id FROM clients WHERE clients_groups LIKE '%34'
但是这会匹配341等等。为什么你有一个值列表?由于这个原因,正常形式通常对此表示不满。