让表A有两列,每列都是其他表的外键,可以存储关键数据。需要根据这些列撤回关键数据,例如名称。可以对每个表执行左连接,但是这将包含许多空值,因此要避免这种情况。外键不使用空值,因为每个值都可能存在一个键 - 但我们不使用该方式,因此一个字段的值为另一个字段。
示例:
表A
:
Index App Ten
----------------
1 123 0
2 124 0
3 0 125
4 0 126
表App
:
Index LName
---------------
123 Jones
124 Smith
表Ten
:
Index Lname
---------------
125 Doe
126 Williams
连接这些表以根据索引选择表的正确方法是什么(如果为零则忽略)并返回所需的数据而不使用左连接和空值?
期望的输出:
Index App Ten Lname
------------------------------
1 123 0 Jones
2 124 0 Smith
3 0 125 Doe
4 0 126 Williams
答案 0 :(得分:3)
Select A.Ind, A.App, A.Ten, coalesce(ap.LName,t.LName)
from A
LEFT JOIN App ap on ap.Ind = A.App
LEFT JOIN Ten t on A.Ten = t.Ind
Coalesce将选择第一个值,如果第一个值为null,则将选择第二个值
答案 1 :(得分:1)
select a.[index], a.App, 0 as [Ten], App.Lname
from a
join App
on a.App = App.[Index]
where a.App <> 0
intersect
select a.[index], 0 as [App], a.Ten, Ten.Lname
from a
join Ten
on a.Ten = Ten.[Index]
where a.Ten <> 0
order by 1
从App获取值,然后将它们与十个相交 &LT;&GT;忽略0条线索