sql >> Databasteknik >  >> RDS >> Mysql

SQL-fråga, välj bara om kolumnen inte är null annars välj inte

Om du vill få en rad med två kolumner när det finns två kolumner som inte är noll, och 1 om det bara finns en, måste du skapa din fråga dynamiskt.

Om du alltid vill ha 1 kolumn där varje rad innehåller ett icke-nullvärde kan du göra 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 = ?

Om du vill kunna veta från vilka kolumner värdena kommer kan du göra något så här:

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

Obs:union tar också bort dubbletter av resultat. Om du vill behålla dubbletter, använd UNION ALL .




  1. Hur man spelar in sekventiella samlingar av poster i MySQL

  2. Förstå ACID-modellen för databashantering

  3. söker programmässigt efter öppen anslutning i JDBC

  4. Får fel - ORA-01858:ett icke-numeriskt tecken hittades där ett numeriskt tecken förväntades