MySQL WHERE查询 - 满足其中一些条件

时间:2016-01-15 09:38:47

标签: mysql

我有一个包含多个字段的表格,并希望在查询符合设定数字的情况下进行搜索,例如满足4个搜索条件中的3个(A ='红色'或B ='红色'或C ='红色&#39 ;或D ='红色')。当字段在同一个表中时,是否有一种简单的方法可以做到这一点?

顺便说一下,我有一个第二个表(有多行匹配数据),我加入到第一个我可以通过计算连接的行数并坚持计数大于3(在上面的示例)但是当字段都在一个表中时,我不确定是否可以完成。

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题:

您想要选择与特定数量的这些" OR" - 组合部分匹配的这些行,对吗?一种可能的解决方案:每次比较都返回1(如果结果为真)或0(如果结果为假)。您只需添加比较结果,并将此整数与您想要的阈值进行比较:

SELECT
  *
FROM
  mytable
WHERE
  ((A IN ('FOO','BAR')) + (B IN ('A','B','C')) + (C IN ('USA','MEX'))) > 2

答案 1 :(得分:0)

您可以尝试这样:

select * from mytable where 'RED' IN(A, B, C, D);

<强> SQL FIDDLE DEMO

修改

但是,如果您想搜索多个可分辨的查询,例如您在评论中所说的内容:

A in ('Red', 'Blue') 
OR B = 'Tall' 
OR C IN ( '1', '2','3') 
OR D IN ('USA','CAN','MEX')

然后没有更短的方式来写它。您必须使用相同的查询来匹配值。