有人知道为什么这个代码不起作用吗:
SELECT clients_id FROM clients WHERE 34 IN (clients_groups)
我在文本列“clients_groups”中存储客户组ID,例如34、35、42等。当“clients_groups”中只有一个值时,语句能正常工作,但如果有多个值,则会返回“未找到”。
有人知道为什么这个代码不起作用吗:
SELECT clients_id FROM clients WHERE 34 IN (clients_groups)
我在文本列“clients_groups”中存储客户组ID,例如34、35、42等。当“clients_groups”中只有一个值时,语句能正常工作,但如果有多个值,则会返回“未找到”。
FIND_IN_SET
函数:SELECT clients_id
FROM clients
WHERE FIND_IN_SET('34', clients_groups)
这不是IN操作符的使用方式。IN子句接受一个字面值列表进行比较,或者来自子查询的行集。对于您想要的内容,您可以使用LIKE:
SELECT clients_id FROM clients WHERE clients_groups LIKE '%34'
但这将匹配341等。为什么你有一个值列表?通常,正常形式会因为这个原因而不赞成这种做法。
IN
子句中的项必须是离散的。而你所拥有的是一个由逗号分隔的单个字符串。 - Phil