2013-10-11 2 views
0

Привет, ребята, я пытаюсь получить все id_user с различным идентификатором 1 и 5, но этот запрос не кажется, работает отличнозапрос не выбирает различные значения

Это запрос:

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

Этот запрос выбирает пользователя с идентификаторами 1 и 5, а что я делаю неправильно?

+1

вам нужно И не ИЛИ, если я правильно понял вопрос. –

+0

(1. id_user = 1) => 1 <> 1 || 1 <> 5 (false ИЛИ true = true) ---- (2. id_user = 5) => 5 <> 1 || 5 <> 5 (true ИЛИ false = true) => TRUE И id_post = 2 - ваш запрос вернет все отдельные id_user, где id_post = 2 – Zyku

+0

Я сделал это для вас http://sqlfiddle.com/#!2/fbf3a/3 –

ответ

0

Попробуйте этот запрос:

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 

Если вы используете оператор ИЛИ в запросе, и вы также используете отрицание not equal to на то же поле, в этом случае каждая запись будет выбрана , Каждая запись будет иметь только одно значение для этого поля, поэтому the condition is always true.

+0

Рассмотреть вопрос о расширении вашего ответа, чтобы объяснить ответчику, почему это достигает желаемого результата, возможно, связанного с документацией , Как есть, это лишь незначительно полезно. –

+0

Я расширил и объяснил свой ответ, рассмотрю обзор и оценку :) – Tauseef

Смежные вопросы