sql >> Databasteknik >  >> RDS >> Mysql

SQL:hur ordnar jag efter ett fält om det inte är null annars använd ett annat fält

Du kan använda COALESCE :

ORDER BY COALESCE(dtModified, dtPosted)

Ett annat alternativ är att använda den MySQL-specifika funktionen IFNULL istället för COALESCE .

Testar på MySQL:

CREATE TABLE table1 (dtModified DATETIME NULL, dtPosted DATETIME NOT NULL);
INSERT INTO table1 (dtModified, dtPosted) VALUES
('2010-07-31 10:00:00', '2010-07-30 10:00:00'),
(NULL                 , '2010-07-31 09:00:00'),
('2010-07-31 08:00:00', '2010-07-30 10:00:00');

SELECT dtModified, dtPosted
FROM table1
ORDER BY COALESCE(dtModified, dtPosted)

Resultat:

dtModified           dtPosted
2010-07-31 08:00:00  2010-07-30 10:00:00
NULL                 2010-07-31 09:00:00
2010-07-31 10:00:00  2010-07-30 10:00:00


  1. T-SQL Hur skapar man tabeller dynamiskt i lagrade procedurer?

  2. Exportera resultat av en Mysql-fråga till Excel?

  3. Hur man formaterar siffror med kommatecken i MySQL

  4. Lär dig databasdesign med SQL Server Management Studio (SSMS) – Del 2