2011-05-12 54 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