有没有办法编写单个查询来检查一组行是否与一组值匹配?我需要匹配每组值一行,并且我想知道所有行是否匹配.我可以通过多个查询执行此操作,例如:
select * from tableName where (value1, value2) = ('someValue1', 'someValue2')
select * from tableName where (value1, value2) = ('someOtherValue1', 'someOtherValue2')
Run Code Online (Sandbox Code Playgroud)
......等等,最多可以查询任意数量的查询.如果所有值都匹配,那么如何将这种事情重写为单个查询,其中查询仅返回?
小智 2
你可以尝试这样的事情:
select t.*
from tableName t
join (select 'someValue1' value1, 'someValue2' value2 union all
select 'someOtherValue1', 'someOtherValue2') v
on t.value1 = v.value1 and t.value2 = v.value2
where 2=
(select count(distinct concat(v1.value1, v1.value2))
from (select 'someValue1' value1, 'someValue2' value2 union all
select 'someOtherValue1', 'someOtherValue2') v1
join tableName t1
on t1.value1 = v1.value1 and t1.value2 = v1.value2)
Run Code Online (Sandbox Code Playgroud)
如果您要检查大量值对,则将它们插入临时表并在上述查询中使用临时表可能会更容易,而不是使用两个单独的硬编码虚拟表。