MySQL - 哪里还是?

Nec*_*ro. 13 mysql sql where

我有一个MySQL语句,我试图排除语句取决于它们"属于"的位置查询通过,但它仍然显示我特别说的行不等于?

SELECT id, belongsto, title, madeby, sticky, locked, lastpost, posts
FROM threads
WHERE sticky !=1
AND belongsto !=12 OR sticky !=1 AND belongsto !=13
ORDER BY  `threads`.`date` DESC 
LIMIT 20
Run Code Online (Sandbox Code Playgroud)

Joh*_*nde 30

您需要在OR语句周围使用括号,将它们逻辑分组.

WHERE sticky !=1
AND belongsto !=12 OR sticky !=1 AND belongsto !=13
Run Code Online (Sandbox Code Playgroud)

应该:

WHERE (sticky !=1 AND belongsto !=12)
OR (sticky !=1 AND belongsto !=13)
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

 WHERE sticky !=1 AND belongsto NOT IN(12,13)
Run Code Online (Sandbox Code Playgroud)

  • 没有括号是"需要的".`AND`运算符的优先级高于`OR`运算符; 括号的加法(如"应该是:"所示)不会改变陈述; 这不能解决问题."更好"之下的重写确实改变了陈述. (2认同)