从2个表中选择记录并对其进行排序

时间:2012-01-10 21:52:10

标签: php mysql

我有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将合并这两个表,但我如何订购它就像我上面提到的那样?

4 个答案:

答案 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;

另外看 http://dev.mysql.com/doc/refman/5.0/en/union.html