我想按 dtModified
(修改日期时间)对我的 Posts
进行排序,如果它不为空(修改后的 b4),否则按 dtPosted
排序(发布日期时间)
最佳答案
您可以使用 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
关于SQL:如果字段不为空,我如何按字段排序,否则使用另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3377854/