WHERE子句中的MySQL条件IF语句

时间:2014-10-12 19:45:03

标签: php mysql sql if-statement where

我疯了......在无数谷歌搜索之后无法弄清楚这一点。我有下表(网)

我试图选择与所有者/隐私信息相匹配的行。

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

如果Bob提取行,它应该是这样的: IF(owner =" bob")然后选择如果privacy = 0或1的行 如果privacy = 0

,ELSE选择行

他可以提取他的私人行(privacy = 1)以及privacy = 0

的任何其他行

如果尝试了这个但是没有给出任何结果:

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

1 个答案:

答案 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