假设我有一张桌子:
start_range end_range
1 4
4 8
如果结果大于start_range的任何值且小于任何相应的end_range,我希望结果为真。
EG。
值2应返回true
,2>1
和2<4
但在这种情况下,值4应返回false
4>1
,但4<4
变为false,而第4种情况则4&gt; 4变为false。
我无法使用查询
SELECT Sumthing
FROM XYZ
WHERE value> SOME(start_range) AND value < SOME(end_range)
上述查询的问题就是说值= 4。
现在4&gt;一些(start_range)将变为4> 1。和
4℃;一些(end_range)也将变为4&lt; 8。
但实际上,比较应该像(((4>1)AND(4<4)) OR ((4>4)AND(4<8)))
。它应该返回false。
还有一件事,上面的表不是持久性的,我一直在子查询中创建它。这就是为什么我一直在使用SOME。 如果我的问题仍然不明确,请在评论中提及。
答案 0 :(得分:0)
假设xyz
是您的表格:
select (count(*) > 0) as HasMatch
from xyz
where value > start_range and value < end_range;
我不确定您使用some
的原因。
编辑:
我想要使用子查询,而xyz
不是有问题的表。也许这就是你想要的:
select xyz.*
from xyz
where exists (select 1
from (<your query here>) t
where xyz.value > t.start_range and xyz.value < t.end_range
);
答案 1 :(得分:0)
你可以做这样的事情
SELECT CASE WHEN start_range<value and end_range>value
THEN 'true'
ELSE 'false'
END here_name_to_this_column(optional)
FROM table_name
答案 2 :(得分:0)
select (count(*) > 0) as HasMatch
from (select IF(start_range<value and end_range>value, true, false ) as value
from XYZ having value =1) as MatchTable