结合“喜欢”,“不喜欢”和“要么”

时间:2018-06-07 12:15:12

标签: mysql sql mysql-workbench

我正在学习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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你只需要括号:

WHERE (table1.word LIKE '%AS%' OR table1.word LIKE '%SP%') AND
      table1.word NOT LIKE '%HI%'

混合ANDOR时,您应始终使用括号。