在sql中的datetime比较中的两个查询结果

时间:2014-04-15 10:58:01

标签: sql sql-server

我有两个SQL查询。

SELECT 
    DATE_FIRST_TABLE
FROM
    FIRST_TABLE

SELECT 
    DATE_SECOND_TABLE
FROM
    SECOND_TABLE

以上两个查询可能会返回单个或多个记录。     我需要检查第二个查询结果,如果任何日期值大于第一个查询结果的任何日期值,那么它将评估为真。

我需要一些建议。

感谢。

2 个答案:

答案 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)

当你说“它会评估为真”时,你的意思是它会返回结果