2014-03-06 100 views
-2

請在SQL查詢中說明此語句的優先級。什麼將首先被檢查,以及如何,我不能很好地理解。SQL WHERE語句優先級

SELECT * FROM table 
WHERE (deleted_by <> :user AND deleted_by <> :nula) 
    OR deleted_by IS NULL 
    AND IDmessage=:ID 
+0

使用'EXPLAIN'來查看MySQL想要做什麼。 –

+0

請參閱一些文檔,如SQL聖經。從一種SQL風格到另一種SQL風格,優先級規則可能有所不同。 – user1929959

+0

請參閱https://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html – AgRizzo

回答

1

ANDOR更高的優先級,所以它等同於:

WHERE (deleted_by <> :user AND deleted_by <> :nula) 
    OR (deleted_by IS NULL AND IDmessage = :ID) 

我推薦使用顯式的括號,只要你有ANDOR混合,因爲結果並不總是直觀。