0
我想弄清楚如何编写一个SQL查询返回两个其他SELECT语句的结果,每个SELECT语句都有自己的JOIN。这里是场景:单选择组合多个JOIN
表1可能在T1Number和/或T1State列中有NULL值。表2可能有具有匹配号码或状态的行。我想要Table1中的所有行,但想要在状态匹配时填入任何具有T2Number的NULL T1Number,并且在数字匹配时填充任何具有T2State的NULL T1State。我不想从表2的行不具有匹配状态或号码:
Table1: Table2:
Name T1Number T1State T2Number T2State
---- -------- ------- -------- -----
Joe 1 NULL 1 MA
Bob NULL CA 2 CA
Dan NULL NULL 3 FL
Sam 4 NY 4 NY
Ray 5 TX 8 PA
所以我有一个SELECT语句来获取编号:
SELECT
Table1.Name,
Table1.T1Number,
Table1.T1State,
Table2.T2Number,
Table2.T2State
FROM Table1
INNER JOIN Table2 ON Table2.T2State = Table1.T1State
WHERE (Table1.T1Number IS NULL OR Table1.T1State IS NULL)
Result:
Name T1Number T1State T2Number T2State
---- -------- ------- -------- -------
Bob NULL CA 2 CA
而另一个SELECT语句来获得国家:
SELECT
Table1.Name,
Table1.T1Number,
Table1.T1State
Table2.T2Number
Table2.T2State
FROM Table1
INNER JOIN Table2 ON Table2.T2Number = Table1.T1Number
WHERE (Table1.T1Number IS NULL OR Table1.T1State IS NULL)
Result:
Name T1Number T1State T2Number T2State
---- -------- ------- -------- -------
Joe 1 NULL 1 MA
如何编写一个组合的SELECT语句,给我以下所需的结果?
Name Number State
---- ------ -----
Joe 1 MA
Bob 2 CA
Dan NULL NULL
Sam 4 NY
Ray 5 TX
我想我需要一个包含SELECT语句,做了左表1和上述查询的工会之间的连接,但我知道这是不是我做它的方式更容易。提前谢谢了。
完美 - 这就是诀窍。谢谢你的帮助。 – MasterOfNone