2011-05-12 47 views
2

我有兩個表,我想獲得的信息與外部左聯接。選擇數據與加入

我有以下查詢:

SELECT * 
    FROM sportjefit_user 
    LEFT OUTER JOIN vriend ON sportjefit_user.id = vriend.vriend2 

這一結果: enter image description here

我只是想記錄,其中 'vriend1' 或 'vriend2' 不是48

可有人請幫幫我?

謝謝。

回答

1

添加where clause這將幾乎完全映射到你說什麼,你需要:

SELECT * 
FROM sportjefit_user LEFT OUTER JOIN vriend ON sportjefit_user.id=vriend.vriend2 
    where !(vriend1=48 or vriend2=48) 
    or (vfriend1 is null and vfriend2 is null); 
+0

我試過,但日返回值是'48'。我想選擇vriend1或vriend2都不等於48的值。我不能選擇使用'is NULL',因爲這些字段可能在某些時候填滿了。 – 2011-05-12 15:45:24

+0

所以你的意思是vfriend1!= 48 AND vfriend2!= 48 – 2011-05-12 15:46:45

+0

這不會返回:( – 2011-05-12 15:47:48

2
SELECT * FROM sportjefit_user 
LEFT OUTER JOIN vriend ON sportjefit_user.id = vriend.vriend2 
WHERE vriend1 <> 48 
OR vriend2 <> 48 

或者,如果你想確保既不場爲48

SELECT * FROM sportjefit_user 
LEFT OUTER JOIN vriend ON sportjefit_user.id = vriend.vriend2 
WHERE vriend1 <> 48 
AND vriend2 <> 48 
1

試試這個:

SELECT * FROM sportjefit_user 
LEFT OUTER JOIN vriend 
ON sportjefit_user.id = vriend.vriend2 
WHERE ((vriend.vriend1<>48) AND (vriend.vriend2<>48)) 
+0

這將返回下述情形之一vriend1或vriend2不是48 ..我要選擇的值,其中他們都不值等於48.我現在得到的是..例如:vriend1 = 51,vriend2 = 48或另一個例子,vriend1 = 48 vriend2 = 89個 – 2011-05-12 15:47:13

+0

@Seeger Mattijs:對不起,我沒有ü nderstand。那麼,你是否需要所有記錄:vriend1是48還是vriend2是48?所以,我認爲你可以用'AND'改變'OR'。讓我知道這是你需要什麼... – Marco 2011-05-12 16:33:59

+0

這做到了!(vfriend1 = 48或vfriend2 = 48)或(vfriend1爲null並且vfriend2爲null) – 2011-05-12 17:32:58