我正在尝试编写一个查询,该查询只需要指定一次数字/值列表,但是请检查它们是否在两列中。这可能吗?
我正在尝试类似的东西:
SELECT date
, source
, destination
FROM cdr
WHERE ('0400000000', '0411111111', '0422222222') IS IN source OR destination;
我找不到其他东西,最接近的是https://stackoverflow.com/a/1314192/2071729
为了更清楚地说明我的目标,我尝试避免两次出现范围变化,例如:
SELECT date
, source
, destination
from cdr
WHERE source IN ('0400000000', '0411111111', '0422222222')
OR destination IN ('0400000000', '0411111111', '0422222222');
最佳答案
试试这个(SQL Fiddle):
select date, source, destination from cdr
where exists (
select * from (select 0 as n union all select 1) as a
where case when n = 0 then cdr.source else cdr.destination end
in ('0400000000', '0411111111', '0422222222')
)
虽然不确定是否会产生最佳的查询计划,但是您必须自己检查一下。
关于mysql - 针对多列选择值范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42570207/