簡體   English   中英

mysql查詢中的FIND_IN_SET為雙重條件

[英]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)    

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM