问题描述
SELECT
A.NAME,A.CODE,B.b_grade,C.c_grade
FROM A
JOIN B ON B.NAME = A.NAME
JOIN C ON C.NAME = A.NAME
我想获得像Veen表演那样的结果。但是sql的结果给了我另一个。
PS:表B没有列“ c_grade”,因此在sql结果中,对于B,列“ c_grade”可以设置为零
解决方法
下面是您需要做的所有事情。
SELECT A.NAME,A.CODE,B.B_GRADE,NULL AS C_GRADE
FROM A JOIN B ON B.NAME = A.NAME
UNION ALL
SELECT A.NAME,NULL AS B_GRADE,C.C_GRADE
FROM A JOIN C ON C.NAME = A.NAME
,
您可以离开外部联接,然后检查是否有任何表匹配:
SELECT
A.NAME,B.*,C.*
FROM A
LEFT JOIN B ON B.NAME = A.NAME
LEFT JOIN C ON C.NAME = A.NAME
WHERE B.NAME != NULL OR C.NAME != NULL
,
尝试一下
SELECT *
FROM tabA
INNER JOIN tabB
ON tabA.primaryKey=tabB.tabAId
INNER JOIN tabC
ON tabA.primaryKey=tableC.tabAId