Mysql 使用alias从前5名的两个表中选择
如何从两个表中选择datetime(dt)并按datetime获取最后5个条目Mysql 使用alias从前5名的两个表中选择,mysql,Mysql,如何从两个表中选择datetime(dt)并按datetime获取最后5个条目 SELECT TOP 5, Table1.dt AS DT, Table2.dt AS TD FROM Table1, Table2 ORDER BY dt DESC LIMIT 5 表1: 2018-04-11 13:09:23 2018-04-12 13:09:23 2018-04-19 13:09:23 2018-04-21 13:09:23 2018-04-29 13:09:23 2018-04-29 15
SELECT TOP 5, Table1.dt AS DT, Table2.dt AS TD FROM Table1, Table2 ORDER BY dt DESC LIMIT 5
表1:
2018-04-11 13:09:23
2018-04-12 13:09:23
2018-04-19 13:09:23
2018-04-21 13:09:23
2018-04-29 13:09:23
2018-04-29 15:09:23
2018-04-11 13:09:23
2018-04-12 13:09:23
2018-04-18 13:09:23
2018-04-21 13:09:23
2018-04-29 13:09:23
2018-04-29 15:09:23
表2:
2018-04-11 13:09:23
2018-04-12 13:09:23
2018-04-19 13:09:23
2018-04-21 13:09:23
2018-04-29 13:09:23
2018-04-29 15:09:23
2018-04-11 13:09:23
2018-04-12 13:09:23
2018-04-18 13:09:23
2018-04-21 13:09:23
2018-04-29 13:09:23
2018-04-29 15:09:23
它是从两个表中按日期时间(dt)排序的前5个表中得到的:
您想要的是一个
联合体,而不是交叉积
SELECT dt, 'DT' AS which
FROM Table1
UNION ALL
SELECT dt, 'TD' AS which
FROM Table2
ORDER BY dt DESC
LIMIT 5
你确定你在使用MySQL吗?它没有TOP 5
,您必须在查询结束时使用LIMIT 5
。它是Table1.dt
,而不是dt.Table1
。您需要一个连接条件来关联两个表中的行,否则会得到一个完整的叉积。并且停止在表之间使用逗号,使用ANSI连接语法。编辑后,不能使用JOIN where Table1.id=Table2.idies,但我现在如何知道哪个日期是Table1还是Table2?如果我需要用php获取数据,我需要两个DTP的别名。你在问题中没有说明这一点。我已经把它添加到了答案中。谢谢你,我的错,如果你不知道mysql的一切,那很难解释。你的回答对我很有帮助。这在不使用子查询的情况下也应该有效。但是我会为这两个表添加ORDER BY dt DESC LIMIT 5
,以提高性能。@Paul Spiegel我本来打算这样做的,但是删除了它,因为我觉得它可能会有点过火,并且会使答案更加混乱。过早的优化等等。。。