0
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

4

2 回答 2

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

于 2013-06-24T01:35:41.003 回答
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)
于 2013-06-24T01:37:03.557 回答