SQL - 显示满足多个条件中的两个或更多条件的记录

use*_*030 2 mysql sql

我有一个包含许多记录的MySQL表.我试图找到一种方法来显示满足查询的多个条件的记录.例如,如果我有这个表.

TABLE NAME: DATA

ID   contactid  flag        flag_type 
-----------------------------------
1     99         Volunteer   1 
2     99         Uploaded    2 
3    100         Via Import  3 
4    100         Volunteer   1  
5    100         Uploaded    2
Run Code Online (Sandbox Code Playgroud)

条件如:

WHERE (ID > 2) OR (flag = 'Uploaded') OR (flag_type = 1) ..etc..
Run Code Online (Sandbox Code Playgroud)

输出将仅返回ID 4和5.

Gor*_*off 5

您可以计算MySQL中的条件数并使用此值:

where ((id > 2) +
       (flag = 'Uploaded') +
       (flag_type = 1)
      ) > 1
Run Code Online (Sandbox Code Playgroud)

布尔值"true"被视为1AND"false"被视为0.因此,通过将值相加,您可以获得满足的条件数.

通常,你这样做是order by为了获得最匹配的第一个:

where id > 2 or flag = 'Uploaded' or flag_type = 1
order by ((id > 2) +
          (flag = 'Uploaded') +
          (flag_type = 1)
         ) desc;
Run Code Online (Sandbox Code Playgroud)