我需要短SQL來留在T1連接T2只有單一的數學的Sql甲骨文LEFT JOIN只匹配單個行
T1 T2 Desired
F1 F2 F1 F2 F1 F2
1 A A RR 1
2 B A 2 UU
3 C A TT 3
4 D B UU 4 YY
5 E C VV 5 ZZ
C XX
D YY
E ZZ
我需要短SQL來留在T1連接T2只有單一的數學的Sql甲骨文LEFT JOIN只匹配單個行
T1 T2 Desired
F1 F2 F1 F2 F1 F2
1 A A RR 1
2 B A 2 UU
3 C A TT 3
4 D B UU 4 YY
5 E C VV 5 ZZ
C XX
D YY
E ZZ
你可以使用一個簡單GROUP BY/COUNT
如果行計數爲< = 1每命中的行和一個CASE
表達計數到僅輸出值;
SELECT T1.F1, CASE WHEN COUNT(*)>1 THEN NULL ELSE MAX(T2.F2) END F2
FROM T1
LEFT JOIN T2 ON T1.F2 = T2.F1
GROUP BY T1.F1
是的工作!謝謝! – Maxrem 2014-09-22 06:54:01
通過使用組,以消除重複記錄,並做左的連接,以獲得從所有價值T1
select T1.F1, ISNULL(T2.F2,'') from T1
LEFT JOIN
(
select F1 from T2
group by F1
having count(*) =1
) T
on T1.F1 = T.F1
LEFT JOIN T2
on T2.F1 = T.F1
如果T2有多行然後返回空F2,否則F2的值是正確的? – Sathish 2014-09-22 04:27:35
您是否試圖在T1.F2 = T2.F1上將T1連接到T2,因此您可以輸出T1.F1和T2.F2,但只有在T2中有一行連接到T1時才能輸出T1,否則返回null?從你的問題來看,這遠非明確。你試過什麼了? – 2014-09-22 04:28:47
如果T2有多行返回null,我不知道要使用哪個運算符,我試圖返回,只有當T2連接T1中的一行否則返回null – Maxrem 2014-09-22 04:34:24