我想将日志显示到按日期排序的最近活动页面。现在我试图将它执行到我的mysql
"SELECT * FROM tracking_log.editlog, tracking_log.deletelog, tracking_log.loginlog, tracking_log.logoutlog ORDER BY time ASC";
但总是说
Column 'time' in order clause is ambiguous
所有表都有一个时间列,格式按datetime(0000-00-00 00:00:00)
我如何按时间顺序取出它们?
提前致谢!
答案 0 :(得分:0)
' tracking_log'是您的数据库名称,并且您从该数据库中选择了多个表,因此您需要指定要从哪个表中订购' time'由:
select * from tracking_log.editlog, tracking_log.deletelog ORDER BY tracking_log.editlog.time ASC
或您要使用的数据库中的哪个表' time'从。这将修复错误但不会返回任何结果,因为SELECT子句中有多个表而没有任何关联它们的表。
您需要指定一些要返回结果的公共列,而不是获取通配符,然后指定UNION表以汇总结果。例如,如果您在所有表中都有公共列 userID , description 和 time ,则可以执行以下操作:
(SELECT userID, description, time FROM tracking_log.editlog)
UNION
(SELECT userID, description, time FROM tracking_log.deletelog)
ORDER BY time
答案 1 :(得分:0)
您要订购哪个表格的时间列?
假设您要按tracking_log.editlog.time
列对结果集进行排序,则查询将如下所示:
SELECT
*
FROM tracking_log.editlog, tracking_log.deletelog,
tracking_log.loginlog, tracking_log.logoutlog
ORDER BY tracking_log.editlog.time ASC;
如果相应表格中的所有时间列同时包含NOT NULL
值,那么您需要使用COALESCE
。
COALESCE
SELECT
*
FROM tracking_log.editlog, tracking_log.deletelog,
tracking_log.loginlog, tracking_log.logoutlog
ORDER BY
COALESCE(tracking_log.editlog.time , tracking_log.deletelog.time, tracking_log.loginlog.time,tracking_log.logoutlog.time) ASC;