I want to select a2.date
if it's there, but if it's NULL
I want to select a1.date
(a2
is being left-joined). This:
SELECT a2.date OR a1.date ...
Simply returns a boolean result (as one would expect), how do I get the actual value of the non-null column though? (a2.date
is preferred, but if it's null then a1.date
)
Multiple Solutions (Column Contains Some NULLs | Column is All NULLs * Test Single Column | Test Multiple Columns with Tabular Results) Where the result is 0, there are no NULLs. Where the result is 0, the column is entirely made up of NULLs.
Description. The IS NULL condition is used in SQL to test for a NULL value. It returns TRUE if a NULL value is found, otherwise it returns FALSE. It can be used in a SELECT, INSERT, UPDATE, or DELETE statement.
The ANSI means is to use COALESCE:
SELECT COALESCE(a2.date, a1.date) AS `date` ...
The MySQL native syntax is IFNULL:
SELECT IFNULL(a2.date, a1.date) AS `date` ...
Unlike COALESCE, IFNULL is not portable to other databases.
Another ANSI syntax, the CASE expression, is an option:
SELECT CASE WHEN a2.date IS NULL THEN a1.date ELSE a2.date END AS `date` ...
It requires more direction to work properly, but is more flexible if requirements change.
Use a CASE
statement for the select.
SELECT CASE WHEN a2.date IS NULL THEN a1.date ELSE a2.date END AS mydate
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With