Rumah >pangkalan data >tutorial mysql >SQL DAN lwn. ATAU: Bagaimanakah Keutamaan Operator Mempengaruhi Keputusan Pertanyaan?
Keutamaan pengendali logik SQL: perbezaan halus antara DAN dan ATAU
Dalam SQL, operator logik DAN dan ATAU menentukan cara menggabungkan berbilang keadaan untuk menapis data. Memahami keutamaan mereka adalah penting untuk memastikan bahawa pertanyaan dilaksanakan dengan betul dan mengelakkan keputusan yang tidak dijangka.
Memahami keutamaan pengendali
Keutamaan mentakrifkan susunan pengendali dalam ungkapan dinilai. Dalam SQL, DAN mempunyai keutamaan yang lebih tinggi daripada OR. Ini bermakna operasi DAN akan dilakukan sebelum operasi ATAU.
Bandingkan dua pernyataan
Pertimbangkan dua pernyataan SQL berikut:
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col in (1,2,3,4,5) AND some_other_expr</code>
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr</code>
Jika anda tidak memahami keutamaan operator, anda mungkin berpendapat bahawa kedua-dua pernyataan ini adalah setara. Walau bagaimanapun, mereka tidak.
DAN keutamaan
Dalam pernyataan kedua, ungkapan some_col in (1,2,3) or some_col in (4,5)
dinilai dahulu kerana ATAU mempunyai keutamaan yang lebih rendah daripada DAN. Hasil ungkapan ini ialah nilai Boolean yang menunjukkan sama ada some_col
berada dalam mana-mana set yang ditentukan. Kemudian, gunakan operator AND untuk menggabungkan nilai boolean ini dengan some_other_expr
.
Sintaks betul yang setara
Untuk menjadikan pernyataan kedua bersamaan dengan yang pertama, kita perlu mengumpulkan dua syarat ATAU menggunakan kurungan untuk mengatasi peraturan keutamaan:
<code class="language-sql">WHERE (some_col in (1,2,3) or some_col in (4,5)) AND some_other_expr</code>
Dengan pengubahsuaian ini, operasi ATAU dalaman dinilai terlebih dahulu dan kemudian boolean yang terhasil digabungkan dengan some_other_expr
menggunakan DAN. Hasilnya adalah sama seperti pernyataan pertama.
Sahkan jadual kebenaran
Anda boleh menggunakan jadual kebenaran untuk mengesahkan perbezaan antara dua pernyataan ini:
some_col | some_other_expr | 语句1 | 语句2 |
---|---|---|---|
1 | true | true | true |
2 | true | true | true |
3 | true | true | true |
4 | true | true | false |
5 | true | true | false |
1 | false | false | false |
2 | false | false | false |
3 | false | false | false |
4 | false | false | false |
5 | false | false | false |
Seperti yang ditunjukkan dalam jadual, kedua-dua pernyataan menghasilkan hasil yang berbeza untuk nilai some_col
yang tidak terdapat dalam dua set yang dinyatakan dalam keadaan OR.
Kesimpulan
Memahami keutamaan pengendali logik SQL adalah penting untuk mengelakkan hasil pertanyaan yang tidak dijangka. Ingat bahawa DAN mempunyai keutamaan yang lebih tinggi daripada OR, dan gunakan kurungan untuk mengumpulkan ungkapan yang diperlukan untuk memastikan susunan pelaksanaan yang diingini.
Atas ialah kandungan terperinci SQL DAN lwn. ATAU: Bagaimanakah Keutamaan Operator Mempengaruhi Keputusan Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!