SELECT * FROM table WHERE column LIKE '%whatever%' AND id='1' OR id='2' OR id='3'
使用上面的代码时,我会返回三行而不是带有
的那一行
column LIKE '%whatever%'
我觉得很奇怪,也无法理解为什么。
如何重写我的sql代码以使用LIKE来检查具有id ='whatever'的多个行
我使用MYSQL和MyISAM
答案 0 :(得分:6)
你需要括号:
SELECT *
FROM table
WHERE column LIKE '%whatever%' AND (id='1' OR id='2' OR id='3')
AND
的优先级高于OR
,因此您的原文被解释为:
WHERE )column LIKE '%whatever%' AND id='1') OR id='2' OR id='3'
使用in
更好地编写原文:
SELECT *
FROM table
WHERE column LIKE '%whatever%' AND id in ('1', '2', '3')
而且,如果id
实际上是一个整数,那么你应该删掉单引号。他们认为类型实际上是一个字符串。
答案 1 :(得分:2)
使用IN
功能
SELECT * FROM table WHERE column LIKE '%whatever%' AND id IN ('1', '2', '3')
我认为id是一个varchar。如果它是一个int,那么使用:
SELECT * FROM table WHERE column LIKE '%whatever%' AND id IN (1, 2, 3)