我有一个包含多个字段的表格,并希望在查询符合设定数字的情况下进行搜索,例如满足4个搜索条件中的3个(A
='红色'或B
='红色'或C
='红色&#39 ;或D
='红色')。当字段在同一个表中时,是否有一种简单的方法可以做到这一点?
顺便说一下,我有一个第二个表(有多行匹配数据),我加入到第一个我可以通过计算连接的行数并坚持计数大于3(在上面的示例)但是当字段都在一个表中时,我不确定是否可以完成。
答案 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')
然后没有更短的方式来写它。您必须使用相同的查询来匹配值。