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
你需要括号:
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
真的是一个整数,你应该去掉单引号。他们建议类型实际上是一个字符串。
使用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)