Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL-Abfrage, nur auswählen, wenn Spalte nicht null ist, sonst nicht auswählen

Wenn Sie eine Zeile mit zwei Spalten erhalten möchten, wenn es zwei Nicht-Null-Spalten gibt, und 1, wenn es nur eine gibt, müssen Sie Ihre Abfrage dynamisch erstellen.

Wenn Sie immer 1 Spalte haben möchten, in der jede Zeile einen Nicht-Null-Wert enthält, können Sie dies mit einer Vereinigung tun.

SELECT a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT c FROM tbl WHERE c IS NOT NULL AND id = ?

Wenn Sie wissen möchten, aus welchen Spalten die Werte stammen, können Sie Folgendes tun:

SELECT 'col a' AS ColName, a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT 'col b', b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT 'col c', c FROM tbl WHERE c IS NOT NULL AND id = ?

Hinweis:Union entfernt auch doppelte Ergebnisse. Wenn Sie Duplikate behalten möchten, verwenden Sie UNION ALL .