我有兩個表X和Y,我想從表Y返回數據,其中X.id=Y.id
從表X中返回,我只想返回那些行,其中X.id!=Y.id
。使用連接從表中檢索數據
我寫了一個查詢
Select * from X left join Y on X.id=Y.id
但將返回我所有從表X在那裏,因爲我想只有那些X.id!=Y.id
行。
我該怎麼做?我希望這些問題是可以理解的。
我有兩個表X和Y,我想從表Y返回數據,其中X.id=Y.id
從表X中返回,我只想返回那些行,其中X.id!=Y.id
。使用連接從表中檢索數據
我寫了一個查詢
Select * from X left join Y on X.id=Y.id
但將返回我所有從表X在那裏,因爲我想只有那些X.id!=Y.id
行。
我該怎麼做?我希望這些問題是可以理解的。
select * from X right join Y on X.ID=Y.ID
OR
select * from Y left join X on X.ID=Y.ID
然後你Y的所有行和那些在X-表中引用的所有數據來自X-表,在Y.
有參考了這你的問題?
其他回答我可以在這個問題上看到的是
with cte (X.ID,Y.ID)
as(
select x.ID,y.ID from X INNER JOIN Y ON X.ID=Y.ID
)
select * from Y JOIN cte
where t.id not in (cte.Y.ID)
UNION ALL
select * from cte
類似的東西(可能需要一些調試沒有SQL管理或SQL Developper :)寫)
的Y所有的行,其中有一個在X現有ID:
SELECT Y.*
FROM Y
INNER JOIN X
USING(id)
X的全部的行,其中有沒有Y中現有的ID
SELECT X.*
FROM X
WHERE id NOT IN (
SELECT id
FROM Y
)
如果輸出列是相同的,你可以做兩個查詢的聯合。
讓我們說,我們有兩個表提到如: -
SELECT * FROM cmp_Company爲x
SELECT * FROM cmp_Company_Contact爲y
例A:[所有的行從Y工作臺返回]
選擇 Y. * 從 cmp_Company_Contact爲Y LEFT JOIN cmp_Company爲X ON X.CO_ID = Y.CO_ID 其中 X.CO_ID = Y.CO_ID
情況B:[否行從X表返回]
從 cmp_Company選擇 X.CO_Name 爲X LEFT JOIN cmp_Company_Contact爲Y ON Y.CO_ID = X.CO_ID 其中 X.CO_ID!= Y.CO_ID
所以根據您所要求的條件,沒有數據將得以實現。
希望它有幫助。
謝謝
這個問題讓我大惑不解。我不明白一件事。也許[SQLFiddle](http://sqlfiddle.com/)? –
'X.id!= Y.id'或'X.id = Y.id'?哪一個? – jackjop
您是否嘗試過'選擇* from X left join Y where X.id = Y.id' – jackjop