sql >> Database >  >> RDS >> Mysql

SQL-query, alleen selecteren als kolom niet null is, anders niet selecteren

Als u een rij met twee kolommen wilt krijgen als er twee niet-null-kolommen zijn, en 1 als er maar één is, moet u uw query dynamisch maken.

Als u altijd 1 kolom wilt hebben waarin elke rij een niet-null-waarde bevat, kunt u dit doen met een unie.

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

Als je wilt weten uit welke kolommen de waarden komen, kun je zoiets als dit doen:

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

Opmerking:Union verwijdert ook dubbele resultaten. Als je duplicaten wilt bewaren, gebruik dan UNION ALL .




  1. Geautomatiseerd testen van PostgreSQL-back-ups

  2. Een overzicht van de nieuwe DBaaS van MariaDB - SkySQL

  3. Een unieke GCM-registratie-ID opslaan in MySQL

  4. Mysql-waarde splitsen in een onbekend aantal delen