假设我有两个相同的表,如下所示,其中包含不同的值。我想获得按日期排序的前 4 条记录。这 4 条记录应该是两个表的并集
示例表:
ID userID Date
1 1111 01/01/2018
2 1112 03/01/2018
3 1113 04/01/2018
4 1114 05/01/2018
5 1115 06/01/2018
6 1116 07/01/2018
ID userID Date
1 1117 02/01/2018
2 1118 03/01/2018
3 1119 05/01/2018
4 1120 06/01/2018
5 1121 07/01/2018
6 1122 08/01/2018
Run Code Online (Sandbox Code Playgroud)
预期输出:
ID userID Date
1 1111 01/01/2018
1 1117 02/01/2018
2 1112 03/01/2018
3 1113 04/01/2018
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个输出。任何帮助将不胜感激。
假设你不关心你得到的结果,你可以使用ORDER BY / LIMIT
两次,一次在每个子查询中,然后第三次在主查询中。
这将比UNION
来自两个表的普通查询更有效,然后LIMIt
,因为它可以(Date)
在两个表上使用索引:
( SELECT ID, UserID, Date
FROM table1
ORDER BY Date
LIMIT 4
)
UNION ALL
( SELECT ID, UserID, Date
FROM table2
ORDER BY Date
LIMIT 4
)
ORDER BY Date
LIMIT 4 ;
Run Code Online (Sandbox Code Playgroud)