Rumah >pangkalan data >tutorial mysql >Adakah Pengendali `DAN` dan `ATAU` SQL Mempunyai Keutamaan yang Berbeza, dan Bagaimanakah Ini Mempengaruhi Keputusan Pertanyaan?
Keutamaan pengendali logik SQL: DAN dan ATAU
Soalan:
Pertimbangkan pernyataan SQL berikut:
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col IN (1,2,3,4,5) AND some_other_expr</code>
dan
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col IN (1,2,3) OR some_col IN (4,5) AND some_other_expr</code>
Adakah kedua-dua pernyataan ini setara? Jika tidak setara, bagaimana kita mengutamakan mereka?
Jawapan:
Keutamaan pengendali DAN dan ATAU
Dalam SQL, keutamaan operator menentukan susunan pengendali logik dalam klausa WHERE dinilai. Keutamaan pengendali AND dan OR adalah seperti berikut:
Ini bermakna walaupun operator AND muncul di sebelah kanan operator OR, ia akan dinilai terlebih dahulu.
Gunakan keutamaan pada pernyataan
Dalam pernyataan yang diberikan:
Oleh itu, pernyataan kedua akan dinilai seperti berikut:
<code class="language-sql">WHERE (some_col IN (1,2,3)) OR (some_col IN (4,5) AND some_other_expr)</code>
Pengesahan jadual kebenaran
Berikut ialah jadual kebenaran yang menggambarkan perbezaan yang dikira:
some_col | some_other_expr | 语句 1 | 语句 2 |
---|---|---|---|
1 | 0 | False | True |
2 | 1 | True | True |
3 | 0 | False | True |
4 | 0 | False | False |
5 | 1 | False | True |
Seperti yang dapat kita lihat, nilai kebenaran kedua-dua pernyataan ini berbeza dalam baris pertama, yang menunjukkan bahawa ia tidak setara.
Gunakan kurungan untuk mengatasi keutamaan
Jika anda ingin menukar susunan pengiraan, anda boleh menggunakan kurungan untuk mengatasi keutamaan lalai. Sebagai contoh, untuk membuat pernyataan kedua bersamaan dengan yang pertama, ia akan ditulis seperti berikut:
<code class="language-sql">WHERE (some_col IN (1,2,3) OR some_col IN (4,5)) AND some_other_expr</code>
Atas ialah kandungan terperinci Adakah Pengendali `DAN` dan `ATAU` SQL Mempunyai Keutamaan yang Berbeza, dan Bagaimanakah Ini Mempengaruhi Keputusan Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!