MainTable
ID Column1 TableA.fK TableB.fk
1 some-value 1 null
2 some-value 1 1
3 some-value null 2
表A
TableA.pk Column1
1 some-value
表B
TableB.pk Column1
1 some-value
2 some-value
Select Main.ID,Main.Column1 ,A.Column1,B.Column1
FROM MainTable main
LEFT JOIN
Table A
ON Main.TableA.fk = A.TableA.pk
LEFT JOIN
TableB b
ON Main.TableB.fk =B.TableB.fk
WHERE Main.ID =1
意味着
结果
ID Column1 A.Column1 B.Column1
1 some-value some-value null
期待输出
ID column1 A.Column1
1 some-value some-value
不应显示B.column1
当tableA外键值不为null时,如果在此处使用SELECT查询,则应从TableA获取所有详细信息 即时通讯使用RDBMS Microsoft Sql Server 2008
答案 0 :(得分:0)
我不明白这里的问题。如果您不希望它显示B.Column1
,请从B.Column1
语句中取出Select
。 击>
你现在有
选择Main.ID,A.Column1,B.Column1
将其更改为
选择Main.ID,A.Column1
根据您在下面的评论,您似乎在寻找Coalesce
或IsNull
,具体取决于您使用的是哪个DBMS(您在问题中没有告诉我们)
这样的事情应该有效:
SELECT
Main.ID, Coalesce(A.Column1, B.Column1) as Column1
FROM
MainTable main
LEFT JOIN
Table A
ON
Main.TableA.fk = A.TableA.pk
LEFT JOIN
TableB b
ON
Main.TableB.fk = B.TableB.fk
WHERE
Main.ID = 1
答案 1 :(得分:0)
请不要将此列放入SELECT
列表中:
SELECT Main.ID, A.Column1
FROM MainTable main
LEFT JOIN
Table A
ON Main.TableA.fk = A.TableA.pk
LEFT JOIN
TableB b
ON Main.TableB.fk = B.TableB.fk
WHERE Main.ID = 1
答案 2 :(得分:0)
从查询中删除B.Column1
Select Main.ID,A.Column1 FROM MainTable main LEFT JOIN Table A ON Main.TableA.fk=A.TableA.pk LEFT JOIN TableB b ON Main.TableB.fk =B.TableB.fk WHERE Main.ID =1