我在SQL中有2個表。查詢表2中找到缺失值的2個表的查詢
- 表1-
- 名稱
- ID
- 表2-
ID
方案
表1只爲每家公司保存一條記錄。在表2中,表1中的記錄可以有多個條目。因此,我可以將兩個表一起加入ID = ID,並獲得0到7個結果中的任意位置。我需要查詢2表,我正在尋找表1中任何不在特定程序中的公司,但他們可以在其他程序中。我知道這很容易做到,但我無法讓它爲我工作。
我在SQL中有2個表。查詢表2中找到缺失值的2個表的查詢
- 表1-
- 表2-
ID
方案
表1只爲每家公司保存一條記錄。在表2中,表1中的記錄可以有多個條目。因此,我可以將兩個表一起加入ID = ID,並獲得0到7個結果中的任意位置。我需要查詢2表,我正在尋找表1中任何不在特定程序中的公司,但他們可以在其他程序中。我知道這很容易做到,但我無法讓它爲我工作。
SELECT *
FROM
Table1 t1
LEFT JOIN Table2 t2
ON t1.id = t2.id
AND t2.program = 'asdf'
WHERE
t2.id IS NULL
只需使用一個外連接的地方連接條件的程序要求,然後說其中對於表2的記錄不存在。
試圖讓這一點更加明確和適應您的具體企業和項目:
SELECT *
FROm
Companies c
LEFT JOIN Programs p
ON c.Id = p.CompanyId
AND p.Program = 'some title'
WHERE
p.Program IS NULL
而且不存在方法:
SELECT *
FROM
Companies c
WHERE
NOT EXISTS (SELECT 1
FROM Programs p
WHERE
p.CompanyId = c.Id
AND p.Program = 'some title')
我不要在方法顯示NOT因爲我通常不會推薦它。
您想讓公司找不到您在查詢中指定的程序嗎?這是我想出了:
select t1.*
from Table1 t1
left join Table2 t2 on t1.ID = t2.ID
where coalesce(t2.Program, '') <> 'Name of Program'
或
where coalesce(t2.Program, '') not in (<comma-delimited list of programs>)
能否請你少用抽象的名字,並分享一些樣本數據與預期的結果爲你的表?我無法遵循你想要做的事。 – Siyual
我覺得在他的輸入中有具體的程序。\ – Naidu
加入後做個where條件。在哪裏table2.program不等於程序,ID – Naidu