[英]FIND_IN_SET in mysql query for double condition
我有這樣的桌子
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.