我需要检查某些单元格(即SET
类型)是否存在某些项目(以逗号分隔)。例如:
id | certifications
1 | a,b,c
2 | b,c
3 | a,c
4 | c
5 | NULL
如果我按a,c
进行搜索,则会返回:
#1
(a,b,c
包含第一个元素a
); #2
(b,c
包含第二个元素c
); #3
(a,c
包含第一个元素a
); #4
(c
包含第二个元素c
)。如果我按b
进行搜索,则会返回:
#1
(a,b,c
包含第一个元素b
); #2
(b,c
包含第一个元素b
); 如果我按a,b,c
进行搜索,则会返回除行#5
以外的所有内容:
#1
(a,b,c
包含第一个元素a
); #2
(b,c
包含第二个元素b
); #3
(a,c
包含第一个元素a
); #4
(c
包含第三个元素c
)。答案 0 :(得分: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;