1
我有两个表如下:MYSQL UNION ALL与唯一的行
Table1
id date pprice
1 22-1-2013 54.56
2 15-2-2013 55.64
3 25-3-2013 57.62
和
Table2
id date dprice
1 12-1-2013 66.56
2 17-2-2013 68.59
3 25-3-2013 70.25
现在,我使用下面的查询
SELECT * FROM (
(SELECT Table1.date, Table1.pprice AS P_Price, NULL AS D_Price FROM Table1)
UNION ALL
(SELECT Table2.date, NULL AS P_Price, Table2.dprice AS D_Price FROM Table2)
) results
ORDER BY date DESC
这将导致以下输出:
date P_Price D_Price
25-3-2013 NULL 70.25
25-3-2013 57.62 NULL
17-2-2013 NULL 68.59
15-2-2013 55.64 NULL
22-1-2013 54.56 NULL
12-1-2013 NULL 66.56
在这种情况下,显示25-3-2013的日期两次以显示一次P_Price和一次D_Price。我试图让日期行只出现一次,同时输入的价格和没有NULL像
date P_Price D_Price
**25-3-2013 57.62 70.25**
17-2-2013 NULL 68.59
15-2-2013 55.64 NULL
22-1-2013 54.56 NULL
12-1-2013 NULL 66.56
我怎么能得到这个?
不错,今天我学到了东西!!!! – user1974729
这有效,但没有按日期排序。订单也可以吗? – Ranadeep
@Ranadeep - 你有没有试过只加入'按日期排序desc'?它应该与'union'的结果一起工作。 – sgeddes