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

MySQL SELECT nur keine Nullwerte

Sie sollten IS NOT NULL verwenden . (Die Vergleichsoperatoren = und <> beide geben UNKNOWN mit NULL auf beiden Seiten des Ausdrucks.)

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

Nur der Vollständigkeit halber erwähne ich, dass Sie in MySQL auch den null sicherer Gleichheitsoperator aber das ist kein Standard-SQL.

SELECT *
FROM table 
WHERE NOT (YourColumn <=> NULL);

Bearbeitet, um Kommentare widerzuspiegeln. Es hört sich so an, als ob sich Ihre Tabelle nicht in der ersten normalen Form befindet. In diesem Fall kann eine Änderung der Struktur Ihre Aufgabe erleichtern. Ein paar andere Möglichkeiten, es zu tun ...

SELECT val1 AS val
FROM  your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2 
FROM  your_table
WHERE val2 IS NOT NULL
/*And so on for all your columns*/

Der Nachteil des oben Gesagten besteht darin, dass die Tabelle mehrmals einmal für jede Spalte gescannt wird. Das kann möglicherweise durch das Folgende vermieden werden, aber ich habe dies nicht in MySQL getestet.

SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM   your_table
        /*CROSS JOIN*/
       JOIN (SELECT 1 AS idx
                   UNION ALL
                   SELECT 2) t
HAVING val IS NOT NULL  /*Can reference alias in Having in MySQL*/