sql >> Databáze >  >> RDS >> Mysql

SQL dotaz, vyberte pouze pokud sloupec není null, jinak nevybírejte

Pokud chcete získat řádek se dvěma sloupci, když existují dva nenulové sloupce, a 1, pokud je pouze jeden, musíte svůj dotaz vytvořit dynamicky.

Pokud chcete mít vždy 1 sloupec, kde každý řádek obsahuje nenulovou hodnotu, můžete to udělat pomocí sjednocení.

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

Pokud chcete vědět, ze kterých sloupců pocházejí hodnoty, můžete udělat něco takového:

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

Poznámka:Sjednocení také odstraní duplicitní výsledky. Pokud si chcete ponechat duplikáty, použijte UNION ALL .




  1. Co je nového v MariaDB 10.4

  2. Jak zakázat přísný režim MySQL

  3. Zřetězení sloupce skupinou v R

  4. Ekvivalent LOAD DATA INFILE v Oracle