像给定的例子一样加入三个表

时间:2015-10-06 19:53:28

标签: mysql sql

我有3张桌子。

     A                         B                   C
id col1 col2         id   col3  col4      sno   id  col5  col6
1  arv   12           1     xcv  sdf       1    2   qwe   arv 
2  qwe   34                                2    2   zxc   cvb
3  asd   23

我希望输出像

id    col1     col2     col3     col4     col5     col6
1     arv       12       xcv     sdf
2     qwe       34                        qwe       arv
3     qwe       34                        zxc       cvb   

如何获得上述结果?

B id是A id的外键。 sno是C中的主键。 C id是A id的外键。

2 个答案:

答案 0 :(得分:1)

您可以使用以下查询:

SELECT @id := @id + 1 AS id,
       A.col1, A.col2, B.col3, B.col4, C.col5, C.col6       
FROM A
LEFT JOIN B ON A.id = B.id
LEFT JOIN C ON A.id = C.id
CROSS JOIN (SELECT @id := 0) AS var
WHERE B.id IS NOT NULL OR C.id IS NOT NULL
ORDER BY A.id, C.sno

Demo here

答案 1 :(得分:0)

鉴于C与A

有关
SELECT A.id, A.col1, A.col2, B.col3, B.col4, C.col5, c.Col6
FROM A
LEFT OUTER JOIN B ON B.id = A.id
LEFT OUTER JOIN C ON C.id = A.id