Опустить все результаты, если одна строка равна определенному значению - PullRequest
1 голос
/ 21 июля 2011

Я хочу выбрать строку (которая появляется несколько раз) из таблицы ТОЛЬКО, если столбец «НЕПРАВИЛЬНО» никогда не читает «ДА». Это означает, что строка существует 100 раз и только один раз НЕПРАВИЛЬНО = да, тогда не отображать ЛЮБЫЕ строки в результате.

* И, если возможно, никаких переменных и циклов while, пожалуйста. Если это невозможно, тогда опубликуйте решение с переменной.

Вот пример структуры таблицы:

Таблица 1

USER--WRONG--otherColumns
bob              data   
bob              data 
bob              data 
bob              data     
bob              data
bob   YES        data
bob              data 
bob              data 
jon              data 

РЕЗУЛЬТАТ должен быть: jon (потому что один раз Wrong был равен yes для пользователя bob)

Этот код курса не опускает все бобы. Только один опущен:

SELECT USER FROM table1 WHERE wrong <> 'yes'

Ответы [ 4 ]

2 голосов
/ 21 июля 2011
select user
from table1 a
where not exists (select 1 from table1 b where a.user = b.user and wrong = 'yes')
1 голос
/ 21 июля 2011
SELECT *
FROM table1 t1
WHERE NOT EXISTS
  (SELECT 1
   FROM table1 t2
   WHERE t1.user = t2.user
   AND wrong = 'yes');
1 голос
/ 21 июля 2011
SELECT
    USER
FROM
    Mytable T1
WHERE
   NOT EXISTS (SELECT 3
       FROM Mytable T2
       WHERE T1.user = T2.User AND T2.Wrong = 'YES')

Вы также можете использовать EXCEPT (тег говорит, что tsql), и это дает тот же план

SELECT
    USER
FROM
    Mytable
EXCEPT
SELECT
    USER
FROM
    Mytable
WHERE
    Wrong = 'YES'

И для СУЩЕСТВУЮЩИХ ненавистников. Предполагается, что в столбце USER нет пустых значений, в противном случае произойдет сбой

SELECT
    USER
FROM
    Mytable T1
WHERE
   T1.USER NOT IN (SELECT T2.USER
       FROM Mytable T2
       WHERE T2.Wrong = 'YES')
0 голосов
/ 21 июля 2011
select user from table1 where wrong <> 'yes' group by user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...