2

我有一个包含逗号分隔值 '1,2,3' 的变量

我的桌子如下

id    favourite_id
1     2,5,6
2     3,5,7
3     6,1,3
4     5,6,7

我想根据 favourite_id 列检查我的变量,以找到至少一个值在 favourite_id 中很常见。所以我想要mysql查询的输出如下

id    favourite_id
1     2,5,6
2     3,5,7
3     6,1,3

我知道这不是规范化的表结构,但我无法更改我的数据库结构。我搜索了很多,但找不到合适的解决方案。

4

2 回答 2

7

使用mysql的REGEXP找到了两个解决方案

(1)

`favourite_id` REGEXP '[[:<:]]1[[:>:]]|[[:<:]]2[[:>:]]|[[:<:]]3[[:>:]]' //faster then below

(2)

`favourite_id` REGEXP '(^|,)(1|2|3)(,|$)' //slower then above
于 2013-09-25T07:00:54.253 回答
4

采用FIND_IN_SET(str,strlist)

更多细节:http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

SELECT FIND_IN_SET('b','a,b,c,d');
于 2013-09-05T06:29:31.243 回答