2015-04-18 231 views
0

我需要检查某些单元格(是否为SET类型)上是否存在某些项目(以逗号分隔)。例如:检查MySQL集合列表中是否存在一些项目

id | certifications 
1 | a,b,c 
2 | b,c 
3 | a,c 
4 | c 
5 | NULL 

如果我通过​​搜索,它会回报:

  • #1a,b,c包含第一要素a);
  • row #2b,c包含第二个元素c);
  • row #3(​​包含第一个元素a);
  • row #4c包含第二个元素c)。

如果我通过b搜索,它会回报:

  • #1a,b,c包含第一要素b);
  • row #2b,c包含第一个元素b);

如果我通过a,b,c搜索,它会返回所有除#5行:

  • #1a,b,c包含第一要素a);
  • row #2b,c包含第二个元素b);
  • row #3(​​包含第一个元素a);
  • #4c包含第三元素c)。

回答

0

只需要normalize您的数据并完成它。

基本上,创建一个连接表id_to_certification

id | cert_id 
------------ 
1 | a 
1 | b 
1 | c 
2 | b 
2 | c 
... 

然后将查询会是这样的:

SELECT id FROM id_to_certification WHERE cert_id IN ("a", "b") GROUP BY id; 
相关问题