Я схожу с ума … не могу понять это после 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')
Вы могли бы использовать 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
Других решений пока нет …