2016-03-15 91 views
1

我想加入使用查询select生成的自我表。如何在自定义结果中加入mysql中的同一张表

表答:

ID || CID || STAT || VAL 
........................... 
A1 || (-) || 1 || 0 
A2 || (-) || 1 || 0 
A3 || (-) || 1 || 0 
B1 || A1 || 2 || 20 
B1 || A2 || 2 || 30 
B2 || A1 || 2 || 40 
B2 || A1 || 2 || 50 
B3 || A1 || 2 || 60 

我想加入表A中的表A,以生成一个有条件的结果。 任何人都可以帮助我做出这样的结果吗?

ID || CID || VAL 
........................... 
A1 || B1 || 20 
A1 || B2 || 40 
A1 || B2 || 50 
A1 || B3 || 60 
A2 || B1 || 30 
A3 || || 

感谢您的关注。

+0

这个结果背后的逻辑是什么? – sagi

+0

没有逻辑,只显示像上面的选择查询。 thx – Antonny

回答

2

可以自联接表A本身:

SELECT t1.ID, COALESCE(t2.ID, '') AS CID, COALESCE(t2.VAL, '') 
FROM tableA t1 LEFT JOIN tableA t2 
    ON t1.ID = t2.CID 
WHERE t1.CID IS NULL 

按照下面的链接,运行演示:

SQLFiddle

+0

thx为您的答案。抱歉让你迷惑我的问题是波动的。列“VALUE”不重要,只是显示结果如何工作。 – Antonny

+0

哇谢谢了很多...解决我的问题..:D – Antonny

0
SELECT a.CID,a.ID,a.VAL FROM database.test a LEFT JOIN imt_database.test b ON a.CID = a.ID WHERE a.CID is not null 

结果:

A1 B1 20 
A2 B1 30 
A1 B2 40 
A1 B2 50 
A1 B3 60