是否可以在SQL中使用“空行”?

时间:2011-07-11 14:36:45

标签: mysql sql

我正在使用MySQL。假设我有表A,B和C.表A是基表。表B和C都有表A的外键。但是我想拉出行,以便输出看起来像这样。

A | B    | C
----------------
1 | 1    | NULL
1 | 2    | NULL
1 | NULL | 1
1 | NULL | 2
2 | 3    | NULL
2 | NULL | 3

因此,当B不再为某个键留下任何行时,查询会转到C并停止为B输出行。这看起来应该很简单,但我似乎无法想出它的方式应该完成。

此问题的标题可能没有意义,但我不确定如何最好地描述该情景。

3 个答案:

答案 0 :(得分:6)

考虑到这一点,OUTER JOIN不会为您提供所需的输出格式。尝试这样的事情:

SELECT a.id AS A, b.id AS B, NULL AS C
FROM tableA a
INNER JOIN tableB ON a.id = b.fid
UNION
SELECT a.id AS A, NULL AS B, c.id AS C
FROM tableA a
INNER JOIN tableC ON a.id = c.fid
ORDER BY 1

答案 1 :(得分:2)

当然,是的,LEFT JOIN是你最敏捷的刀。

SELECT A.*,B.*,C.* FROM A
LEFT JOIN B ON A.ID = B.REFID
LEFT JOIN C ON A.ID = C.REFID

答案 2 :(得分:0)

您可以使用外部联接:

select a.id, b.id, c.id
from a
left join b on a.id = b.id
left jon c on a.id = c.id