我疯了......在无数谷歌搜索之后无法弄清楚这一点。我有下表(网)
我试图选择与所有者/隐私信息相匹配的行。
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')
答案 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