2015-01-13 3 views
1

У меня такой запрос.Сравнение полей только тогда, когда NOT null

SELECT T1.timestamp, T2.timestamp FROM (SELECT …) AS T1 LEFT OUTER JOIN (SELECT ….) AS T2 ON T1.id = T2.id WHERE T1.timestamp < T2.timestamp

Проблема я столкнулся в том, что условие WHERE T1.timestamp < T2.timestamp будет отфильтровать строки, где T1.timestamp < T2.timestamp, а также строки, в которых T2.timestamp является нулевым.

В моем случае использования я не хочу, чтобы запрос отфильтровывал строки, где T2.timestamp имеет значение NULL. T1.timestamp < T2.timestamp следует сравнивать, только если определены обе метки времени и должны возвращать строки, где T2.timestamp имеет значение NULL.

Есть ли способ достичь этого?

+2

'WHERE T1.timestamp Pentium10

+0

Я пробовал это, и он работает. Огромное спасибо!!! –

+0

WHERE T1.timestamp <= ifnull (T2.timestamp, T1.timestamp) –

ответ

2

Копирование N.N. ответить здесь, так что вопрос не обнаруживается с 0 ответов:

WHERE T1.timestamp<= ifnull(T2.timestamp,T1.timestamp) 

И Pentium10 ответ:

WHERE T1.timestamp < T2.timestamp OR T2.timestamp IS NULL 

(я удалю этот ответ, если NN или Pentium10 переместить свои комментарии к ответу)

Смежные вопросы