我有一张这样的 table
products : id , name , groups , domains
这里的组和域都是逗号分隔的字段。我正在处理一个现有的项目,我无法更改结构。这是详细信息。
groups : id , name
domains : id , name
产品
id | name | groups | domains
------------------------------------------------
1 | A | 1,2,3 | 0
2 | B | 1,2,3 | 0
3 | C | 1,2,3 | 1,2
4 | D | 2,3 | 1,3
5 | E | 2,3 | 2,3
6 | F | 2,3 | 2,3,4
7 | G | 1,2,3 | 0
8 | H | 1,2,3 | 0
9 | I | 2,3 | 1,2,4
10 | J | 3 | 1,3
11 | K | 3 | 2,4
12 | L | 3 | 2,3
13 | M | 1,2,3 | 0
14 | N | 1,2,3 | 0
15 | 0 | 3 | 1,2,4
域名
id | name
---------------------
1 | yahoo
2 | gmail
3 | mailinator
4 | hotmail
群组
id | name
---------------------
1 | General
2 | Contractor
3 | Partner
现在我需要选择所有具有这些条件的人。
我如何选择产品
groups : 3
domains : 1
注0表示全部(1,2,3,4)
最佳答案
很遗憾您无法修改此内容,+1 希望您能够修改。但是使用 FIND_IN_SET()
你有正确的想法。唯一需要考虑的事情是考虑 0
(全部)值的 OR
条件。为每个条件提供满足 FIND_IN_SET()
或等于 0
的选项。
SELECT *
FROM products
WHERE (FIND_IN_SET(3, groups)
OR groups = 0)
AND (FIND_IN_SET(1, domains)
OR domains = 0)
关于php - mysql查询中的FIND_IN_SET双条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665914/