首页 > 解决方案 > SQL 查询从表中选择不存在于不同表开始和结束时间字段中的所有行?

问题描述

我有 table1 我想要返回的行在表 2 中相同的 id 开始和结束时间戳字段中不存在。我有下面的查询,但它返回 0 行。我看不出我做错了什么?

SELECT table1.*
FROM table1
WHERE table1.day = date '03-04-19'
  AND NOT EXISTS
    (SELECT NULL
     FROM table2
     WHERE table1.id = table2.id
       AND table1.timestamp >= table2.start_time
       AND table1.timestamp <= table2.end_time)

标签: sqldatetimepresto

解决方案


也许您的问题只是您的日期格式:

SELECT table1.*
FROM table1
WHERE table1.day = date '2019-04-03' AND
     NOT EXISTS (SELECT 1
                 FROM table2
                 WHERE table1.id = table2.id AND
                       table1.timestamp >= table2.start_time AND
                       table1.timestamp <= table2.end_time
                 );

推荐阅读