-2
請在SQL查詢中說明此語句的優先級。什麼將首先被檢查,以及如何,我不能很好地理解。SQL WHERE語句優先級
SELECT * FROM table
WHERE (deleted_by <> :user AND deleted_by <> :nula)
OR deleted_by IS NULL
AND IDmessage=:ID
請在SQL查詢中說明此語句的優先級。什麼將首先被檢查,以及如何,我不能很好地理解。SQL WHERE語句優先級
SELECT * FROM table
WHERE (deleted_by <> :user AND deleted_by <> :nula)
OR deleted_by IS NULL
AND IDmessage=:ID
AND
比OR
更高的優先級,所以它等同於:
WHERE (deleted_by <> :user AND deleted_by <> :nula)
OR (deleted_by IS NULL AND IDmessage = :ID)
我推薦使用顯式的括號,只要你有AND
和OR
混合,因爲結果並不總是直觀。
使用'EXPLAIN'來查看MySQL想要做什麼。 –
請參閱一些文檔,如SQL聖經。從一種SQL風格到另一種SQL風格,優先級規則可能有所不同。 – user1929959
請參閱https://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html – AgRizzo