2014-10-12 7 views
1

Я схожу с ума ... не могу понять это после поиска gazillion google. У меня есть следующая таблица (Net)MySQL Условный оператор IF в предложении WHERE

Я пытаюсь выбрать строки, соответствующие информации о владельце/конфиденциальности.

ID  | net  | owner  | privacy 
+++++++++++++++++++++++++++++++++++++++++++++++ 
1  | 1234  | bob   | 1 
2  | 2345  | charles  | 1 
3  | 3456  | city   | 0 
4  | 4567  | public  | 0 

Если Боб извлечения строк он должен идти, как этот: IF (владелец = "боб"), а затем выберите строку, если приватность = 0 или 1 ELSE выберите строку, если приватность = 0

Он может извлечь свою частную строку (конфиденциальность = 1) и любую другую строку, где приватность = 0

If've попробовал это, но не дает никакого результата:

SELECT * FROM `Net` WHERE IF (STRCMP(owner, 'bob'), 'privacy < 2', 'privacy = 0') 

ответ

0

Вы можете использовать логический оператор or упростить эту логику:

SELECT * 
FROM my_table 
WHERE (owner = 'bob' AND (privacy IN (0, 1)) OR privacy = 0 

Если предположить, что privacy никогда не может быть только 0 или 1, если владелец bob, вы можете просто опустить приватность and ветвь вообще:

SELECT * 
FROM my_table 
WHERE owner = 'bob' OR privacy = 0 
+0

DUH! Ты прав! Мне не нужна инструкция IF. Спасибо! –

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