我有一个带有字段(id,name)的mysql表。 names字段是逗号分隔的名称数组。 (例如bob,joe,tim,fred)我想选择值在该名称数组中的所有行。我已经尝试了但无法使其工作。任何帮助表示赞赏!
SELECT * FROM table WHERE '$value' IN name
答案 0 :(得分:0)
IN
才有效。
即
'bob' IN ('bob','joe','tim','fred')`
MySQL正在将逗号分隔的字符串作为一个值读取,而不是作为4.您的查询正在运行:
'bob' IN ('bob,joe,tim,fred')
因为'bob'
并不存在于您提供IN
的元素中而无法正常工作。
一种解决方案是使用FIND_IN_SET
。
SELECT * FROM table WHERE FIND_IN_SET('$value', name);
这样可行,但不会使用索引。
答案 1 :(得分:0)
示例:语句在字符串列表中的第二位找到搜索字符串'ank'。所以它返回2.
SELECT FIND_IN_SET('ank', 'b,ank,of,monk');
功能:
SELECT *
FROM author
WHERE FIND_IN_SET(left(aut_name,7), 'William,steven,jung,angalo') > 0;
阅读MySQL API并使用示例。希望有所帮助。