SQL-запрос для выбора всех строк из таблицы, которые не существуют в разных полях начала и конца таблицы? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть table1, чьи строки, которые я хочу вернуть, не существуют в тех же полях начала и конца идентификаторов идентификаторов в таблице 2. У меня есть запрос ниже, но он возвращает 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)

Ответы [ 3 ]

1 голос
/ 10 апреля 2019

Возможно, ваша проблема - просто ваш формат даты:

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
                 );
0 голосов
/ 10 апреля 2019

Я не понимаю, почему вы используете> = и <=. Но вы можете попробовать это: </p>

SELECT table1.*
FROM table1
LEFT JOIN
table2
ON
table1.id = table2.id
AND table1.timestamp >= table2.start_time
AND table1.timestamp <= table2.end_time
WHERE table1.date = CAST('03-04-19' as DATE)
AND table2.id IS NULL
0 голосов
/ 10 апреля 2019

попробуйте, как показано ниже

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