sql >> Database teknologi >  >> RDS >> Mysql

SQL-forespørgsel, vælg kun hvis kolonnen ikke er null ellers skal du ikke vælge

Hvis du vil have en række med to kolonner, når der er to kolonner, der ikke er nul, og 1, hvis der kun er én, skal du oprette din forespørgsel dynamisk.

Hvis du altid vil have 1 kolonne, hvor hver række indeholder en ikke-nul værdi, kan du gøre det med en union.

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 = ?

Hvis du vil kunne vide, fra hvilke kolonner værdierne kommer, kan du gøre sådan her:

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 = ?

Bemærk:union fjerner også duplikerede resultater. Hvis du vil beholde dubletter, skal du bruge UNION ALL .




  1. mysql alfabetisk rækkefølge

  2. Kan ikke finde microsoft.sqlserver.batchparser.dll

  3. Tilsidesæt Query Optimizer til dine T-SQL-joins med FORCEPLAN

  4. Begår du disse fejl, når du bruger SQL CURSOR?