我有2张表A和B,其中包含以下记录
--TABLE A--
id date value
1 09/01/2012 Reward
2 09/01/2012 Purchase
3 07/01/2012 Reward
4 07/01/2012 Purchase
--TABLE B--
id id_from_a date value
1 1 10/01/2012 Generated Rewrd
2 3 08/01/2012 Generated Reward
现在我希望结果如下所示
id date value
1 10/01/2012 Generated Reward
1 09/01/2012 Reward
2 09/01/2012 Purchase
3 08/01/2012 Generated Reward
3 07/01/2012 Reward
4 07/01/2012 Purchase
我知道使用UNIONS
将合并这两个表,但我如何订购它就像我上面提到的那样?
答案 0 :(得分:4)
UNION可以在末尾指定一个ORDER BY子句,该子句适用于整个组合结果集。
SELECT id, date, value
FROM table_A
UNION
SELECT id, date, value
FROM table_B
ORDER BY id, date DESC
如果您不需要UNION操作的重复数据删除功能,UNION ALL将产生更好的性能。
SELECT id, date, value
FROM table_A
UNION ALL
SELECT id, date, value
FROM table_B
ORDER BY id, date DESC
答案 1 :(得分:2)
您需要来自id
的{{1}}和来自table_a
的{{1}}。您只能在id_from_a
子句中使用table_b
:
id
答案 2 :(得分:2)
(SELECT id, date, value FROM Table_A
UNION ALL
SELECT id, date, value FROM Tabble_B)
ORDER BY id, date DESC
为安全起见,请务必使用UNION ALL。 UNION ALL是UNION SELECT DISTINCT对SELECT ... UNION ALL将显示重复记录的所有实例而不是一个。
答案 3 :(得分:1)
您可以订购联合的结果,检查下面的语法
(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
ORDER BY a;