2014-07-01 48 views
-1

我有兩個表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行。

我該怎麼做?我希望這些問題是可以理解的。

+2

這個問題讓我大惑不解。我不明白一件事。也許[SQLFiddle](http://sqlfiddle.com/)? –

+0

'X.id!= Y.id'或'X.id = Y.id'?哪一個? – jackjop

+0

您是否嘗試過'選擇* from X left join Y where X.id = Y.id' – jackjop

回答

0
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 :)寫)

0

的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 
) 

如果輸出列是相同的,你可以做兩個查詢的聯合。

0

讓我們說,我們有兩個表提到如: -

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

所以根據您所要求的條件,沒有數據將得以實現。

希望它有幫助。

謝謝