MySQL Условный оператор IF в предложении WHERE

Я схожу с ума … не могу понять это после gazillion поисков Google. У меня есть следующая таблица (нетто)

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

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

Если Боб извлекает строки, он должен выглядеть следующим образом:
IF (owner = «bob») затем выберите строку, если частная жизнь = 0 ИЛИ 1
В противном случае выберите строку, если конфиденциальность = 0

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

Если вы пробовали это, но не дали никакого результата:

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

1

Решение

Вы могли бы использовать 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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]