我試圖從兩個表的連接中確定以下內容:
示例表 A:包含 1 列,其中包含唯一 ID
ID Name Department
1 John IT
2 Jason Sales
3 Dany IT
4 Mike HR
5 Alex HR
示例 TableB:包含多個列,包括 TableA 中的 ID。例如:
ID AccountNumber WebID
1 10725 ABC1
1 10726 ABC1
1 10727 ABC1
2 20100 ABC2
2 20101 ABC2
3 30100 ABC3
4 40100 NULL
我想得到以下結果:
ID Name WebID
1 John ABC1
2 Jason ABC2
3 Dany ABC3
4 Mike NULL
5 Alex NULL
我嘗試了以下查詢,它為這些示例表回傳了正確的行:
Select count(a.ID), a.ID, a.Name, b.WebID from TableA a
left join TableB b on a.ID = b.ID
group by a.ID, a.Name, b.WebID
但我的實際資料庫表,此查詢不回傳正確的行數:(30992)
TableA contains 29066 rows and TableB contains 23033 rows
查詢應該回傳 29066 行,因為它是左連接。
當我檢查 TableA 中但不在 TableB 中的 ID 時,有 6033 行:
Select * from TableA where ID not in (Select ID from TableB)
我在查詢中遺漏了什么嗎?
uj5u.com熱心網友回復:
表 B 有重復的 ID 列...下面的代碼應該可以作業(但可能不是您期望的結果,因為我只是在 webid 列上做了一個最大值,如果它總是相同的話,但我需要一個規則,如果不是)
我剛看到你有一個計數...我把它加進去了。
SELECT A.ID, A.Name, B.WebID
FROM TABLEA A
LEFT JOIN (
SELECT ID, MAX(WebID) AS WebID, count(*) as CNT
FROM TABLEB
GROUP BY ID
) B ON A.ID = B.ID
uj5u.com熱心網友回復:
我認為您的查詢就這么簡單:
select a.ID,a.Name,b.WebID
from TableA a
left join TableB b on a.ID = b.ID
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515062.html
標籤:C#sql甲骨文加入
上一篇:標記兩個資料幀之間不匹配的記錄
