Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:как да подредя по поле, ако не е нула, иначе използвам друго поле

Можете да използвате COALESCE :

ORDER BY COALESCE(dtModified, dtPosted)

Друга възможност е да използвате специфичната за MySQL функция IFNULL вместо COALESCE .

Тестване на 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)

Резултати:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql съвпадение срещу ~ пример

  2. MySql Cursor - Създаване на процедура

  3. Изтриване от MySQL таблица с ограничения на външния ключ

  4. Ускоряване на преброяването на редове в MySQL

  5. PHP:Динамично падащо меню с optgroup