结合LIKE和AND的SQL给了我错误的结果

Joe*_*oel 0 mysql sql myisam

SELECT * FROM table WHERE column LIKE '%whatever%' AND id='1' OR id='2' OR id='3'
Run Code Online (Sandbox Code Playgroud)

当使用上面的代码时,我回到了三行而不是那一行
column LIKE '%whatever%'
我发现它很奇怪,并且无法理解为什么.

如何重写我的sql代码以使用LIKE来检查具有id ='whatever'的sevral行

我使用MYSQL和MyISAM

Gor*_*off 6

你需要括号:

SELECT *
FROM table
WHERE column LIKE '%whatever%' AND (id='1' OR id='2' OR id='3')
Run Code Online (Sandbox Code Playgroud)

AND优先级高于OR,因此您的原文被解释为:

WHERE )column LIKE '%whatever%' AND id='1') OR id='2' OR id='3'
Run Code Online (Sandbox Code Playgroud)

原文写得更好in:

SELECT *
FROM table
WHERE column LIKE '%whatever%' AND id in ('1', '2', '3')
Run Code Online (Sandbox Code Playgroud)

而且,如果id真的是一个整数,你应该删掉单引号.他们建议这种类型真的是一个字符串.