ВЫБОР с несколькими условиями WHERE в одном столбце - PullRequest
60 голосов
/ 29 октября 2010

Хорошо, я думаю, что я мог бы пропустить что-то очевидное / простое здесь ... но мне нужно написать запрос, который возвращает только записи, которые соответствуют нескольким критериям в одном столбце ...

Моя таблицаочень простая настройка связывания для применения флагов к пользователю ...

ID   contactid  flag        flag_type 
-----------------------------------
118  99         Volunteer   1 
119  99         Uploaded    2 
120  100        Via Import  3 
121  100        Volunteer   1  
122  100        Uploaded    2

и т. д. ... в этом случае вы увидите, что оба контакта 99 и 100 помечены как "Волонтер" и "Загружен"...

Что мне нужно сделать, это вернуть ТОЛЬКО те контактные данные, которые соответствуют нескольким критериям, введенным через форму поиска ... контактные должны соответствовать ВСЕ выбранные флаги ... в моей голове SQLдолжно выглядеть примерно так:

SELECT contactid 
 WHERE flag = 'Volunteer' 
   AND flag = 'Uploaded'...

но ... это ничего не возвращает ... Что я здесь не так делаю?

Ответы [ 12 ]

0 голосов
/ 10 ноября 2013

AND вернет вам ответ, только если в вашем столбце присутствуют volunteer и uploaded. В противном случае он вернет null значение ...

попробуйте использовать OR в своем утверждении ...

SELECT contactid  WHERE flag = 'Volunteer' OR flag = 'Uploaded'
0 голосов
/ 27 июля 2012

Иногда вы не можете увидеть дерево для деревьев:)

Ваш исходный SQL ..

SELECT contactid 
 WHERE flag = 'Volunteer' 
   AND flag = 'Uploaded'...

Должно быть:

SELECT contactid 
 WHERE flag = 'Volunteer' 
   OR flag = 'Uploaded'...
...