选择多个表并按日期时间列排序显示它们
Selecting multiple tables and displaying them ordered by datetime column
我想将日志显示到按日期排序的最近活动页面。现在我试图对我的 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
所有表都有一个时间列,按日期时间格式 (0000-00-00 00:00:00)
我如何按时间顺序获取它们?
提前致谢!
'tracking_log' 是您的数据库名称,您要从该数据库中选择多个 table,因此您需要指定要从哪个 table 订购 'time' 来自:
select * from tracking_log.editlog, tracking_log.deletelog ORDER BY tracking_log.editlog.time ASC
或您要从中使用 'time' 的数据库中的任何一个 table。这将修复错误,但不会 return 任何结果,因为您在 SELECT 子句中有多个 table,但没有任何关联。
您需要指定一些您想要 return 结果的公共列,而不是获取通配符,然后 UNION tables 来聚合结果。例如,如果您在所有 tables,您可以执行以下操作:
(SELECT userID, description, time FROM tracking_log.editlog)
UNION
(SELECT userID, description, time FROM tracking_log.deletelog)
ORDER BY time
您想按哪个 table 的时间栏排序?
假设您要按 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;
以防万一 table 中的所有时间列都不同时包含 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;
我想将日志显示到按日期排序的最近活动页面。现在我试图对我的 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
所有表都有一个时间列,按日期时间格式 (0000-00-00 00:00:00)
我如何按时间顺序获取它们?
提前致谢!
'tracking_log' 是您的数据库名称,您要从该数据库中选择多个 table,因此您需要指定要从哪个 table 订购 'time' 来自:
select * from tracking_log.editlog, tracking_log.deletelog ORDER BY tracking_log.editlog.time ASC
或您要从中使用 'time' 的数据库中的任何一个 table。这将修复错误,但不会 return 任何结果,因为您在 SELECT 子句中有多个 table,但没有任何关联。
您需要指定一些您想要 return 结果的公共列,而不是获取通配符,然后 UNION tables 来聚合结果。例如,如果您在所有 tables,您可以执行以下操作:
(SELECT userID, description, time FROM tracking_log.editlog)
UNION
(SELECT userID, description, time FROM tracking_log.deletelog)
ORDER BY time
您想按哪个 table 的时间栏排序?
假设您要按 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;
以防万一 table 中的所有时间列都不同时包含 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;