2015-04-18 273 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; 
相關問題