我有一个mysql查询,用于选择col1和col2 = 4以及col3或col4 = 0的记录
SELECT * FROM table WHERE 4 IN(col1, col2) && (col3 = 0 || col4 = 0)
是或不工作。它返回零行,我知道有4行
答案 0 :(得分:3)
&安培;&安培;和||在SQL中是AND和OR。
将其重写为:
SELECT * FROM table WHERE (col1 = 4 AND col2 = 4) AND (col3 = 0 OR col4 = 0)
您不能将IN用于列名。您可以像这样使用IN:
WHERE col3 IN('4','a','another valid value')
,
等于WHERE (col3 = '4' OR col3 = 'a' OR ...)
答案 1 :(得分:0)
请尝试以下内容,而不是因为您发布的代码4 IN (col1, col2)
将为col1=4 or col2 = 4
,而您希望它为and
条件
每次评论更新;下面的查询将准确地获取那些记录
总共有4行,其中column1或column2 = 4 行我只想返回col3或col4 = 0的行
SELECT *
FROM test4
WHERE (col1 = 4 or col2 = 4)
and (col3 = 0 or col4 = 0)