2013-10-11 45 views
0

好家伙,我试图让不同ID的1和5的所有id_user但此查询似乎并没有很好地工作查询不选择不同的值

这是查询:

SELECT DISTINCT(id_user) 
FROM post_comment 
WHERE (id_user <> 1 || id_user <> 5) AND id_post = 2 

此查询选择ID为1和5的用户以及我做错了什么?

+1

你需要AND而不是OR,如果我正确地理解了这个问题。 –

+0

(1. id_user = 1)=> 1 <> 1 || 1 <> 5(false或true = true)---- (2. id_user = 5)=> 5 <> 1 || 5 <> 5(true OR false = true)=> TRUE AND id_post = 2 - 您的查询将返回所有不同的id_user,其中id_post = 2 – Zyku

+0

我为您制作了一个http://sqlfiddle.com/#!2/fbf3a/3 –

回答

0

尝试此查询:如果您使用在查询一个或操作者与您同时使用在同一领域的否定not equal to,在这种情况下

SELECT DISTINCT(id_user) 
FROM post_comment 
WHERE id_user <> 1 and id_user <> 5 AND id_post = 2 
1
SELECT DISTINCT(id_user) 
FROM post_comment 
WHERE (id_user <> 1 AND id_user <> 5) AND id_post = 2 

,每个记录会被选中。每个记录对于该字段只有一个值,因此the condition is always true

+0

考虑扩展您的答案以向提问者解释为什么这会达到所需的结果,可能链接到文档。如此,这仅仅是有用的。 –

+0

我已经扩展并解释了我的答案,请考虑审阅和欣赏:) – Tauseef