我正在学习MySQL,并且我试图在我的查询中将“NOT LIKE”和“OR”结合起来是徒劳的。
假设我有一个table1,其中一列名为“word”,如下所示:
word
1 SPAS
2 SPAM
3 HILAS
4 BAMM
5 ASCAR
6 CASE
7 ASHISPA
如果运行此代码:
SELECT * FROM table1
WHERE table1.word LIKE '%AS%' AND
table1.word LIKE '%SP%';
我得到了
word
1 SPAS
7 ASHISPA
当我与“NOT LIKE”结合使用时如下:
SELECT * FROM table1
WHERE table1.word LIKE '%AS%' AND
table1.word LIKE '%SP%' AND
table1.word NOT LIKE '%HI%';
我得到以下内容:
word
1 SPAS
当我使用“OR”运行查询时如下:
SELECT * FROM table1
WHERE table1.word LIKE '%AS%' or
table1.word LIKE '%SP%';
我得到的结果为:
word
1 SPAS
2 SPAM
3 HILAS
5 ASCAR
6 CASE
7 ASHISPA
为了省略'HILAS'和'ASHISPA'尝试过:
SELECT * FROM table1
WHERE table1.word LIKE '%AS%' OR
table1.word LIKE '%SP%' AND
table1.word NOT LIKE '%HI%'
得到了:
word
1 SPAS
2 SPAM
3 HILAS
5 ASCAR
6 CASE
7 ASHISPA
如何使用“OR”查询带有“SP”和“AS”的单词,并使用“NOT LIKE”排除那些拥有“HI”并获得以下结果的单词:
word
1 SPAS
2 SPAM
5 ASCAR
6 CASE
答案 0 :(得分:2)
如果我理解正确,你只需要括号:
WHERE (table1.word LIKE '%AS%' OR table1.word LIKE '%SP%') AND
table1.word NOT LIKE '%HI%'
混合AND
和OR
时,您应始终使用括号。