我尝试了以下查询以获取顶部的最新注释。
SELECT u.id, comments, DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time FROM mytable m INNER JOIN users u ON m.added_by = u.id
UNION
SELECT c.id comments, DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time FROM mytable m INNER JOIN contacts c ON m.added_by = c.id
ORDER BY comment_date_time desc;
但我得到了"评论日期",比如:
2012年8月16日上午12:58
2012年8月21日上午12:05
2012年8月20日晚上11:54
2012年8月16日凌晨01:38
这里的comment_date是DATETIME。
目前我将日期和时间分别排序,如
DATE_FORMAT(comment_date, '%h:%i%p') AS comment_time
DATE_FORMAT(comment_date, '%m-%d-%Y') AS comment_date
有更好的解决方案吗?
感谢
您的查询是正确的。但是您需要将它排序到原始列(comment_date
),因为它的数据类型是datetime
。你所做的是你以你的alias
的名字订购的,现在是string
。试试这个,
SELECT id, comments, comment_date_time
FROM
(
SELECT u.id, comments,
DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time,
comment_date
FROM mytable m INNER JOIN users u ON m.added_by = u.id
UNION
SELECT c.id comments,
DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time,
comment_date
FROM mytable m INNER JOIN contacts c ON m.added_by = c.id
) x
ORDER BY x.comment_date desc;