我有两个SQL查询。
SELECT
DATE_FIRST_TABLE
FROM
FIRST_TABLE
和
SELECT
DATE_SECOND_TABLE
FROM
SECOND_TABLE
以上两个查询可能会返回单个或多个记录。 我需要检查第二个查询结果,如果任何日期值大于第一个查询结果的任何日期值,那么它将评估为真。
我需要一些建议。
感谢。
答案 0 :(得分:1)
这是你想要的吗?
select 'true'
from second_table
where date_second_table > (select max(date_first_table) from first_table)
声明:“如果任何日期值大于第一个查询结果的任何日期值,我需要检查第二个查询结果,然后它将评估为真。”这有点难以遵循逻辑。当第二个查询的值大于第一个查询的所有值时,上面的返回值为“true”。
答案可能是:
select max('true')
from second_table
where date_second_table > (select min(date_first_table) from first_table)
一个关键的补充是max()
函数,它将其转换为聚合函数,因此它返回一行。
编辑:
你的问题对于在“假”案件中该怎么做是模棱两可的。正如你在评论中所建议的那样,答案是:
select (case when count(*) > 0 then 1 else 0 end)
from second_table
where date_second_table > (select min(date_first_table) from first_table);
类似的方法是使用显式join
。虽然这样做效果不太好,但它可能更好地捕获逻辑:
select (case when count(*) > 0 then 1 else 0 end)
from first_table t1 join
second_table t2
on t1.date_first_table > t2.date_second_table;
答案 1 :(得分:0)
SELECT DATE_SECOND_TABLE FROM SECOND_TABLE WHERE DATE_SECOND_TABLE > (SELECT DATE_FIRST_TABLE FROM FIRST_TABLE)
当你说“它会评估为真”时,你的意思是它会返回结果