Rumah > pangkalan data > tutorial mysql > Adakah Pengendali `DAN` dan `ATAU` SQL Mempunyai Keutamaan yang Berbeza, dan Bagaimanakah Ini Mempengaruhi Keputusan Pertanyaan?

Adakah Pengendali `DAN` dan `ATAU` SQL Mempunyai Keutamaan yang Berbeza, dan Bagaimanakah Ini Mempengaruhi Keputusan Pertanyaan?

Linda Hamilton
Lepaskan: 2025-01-22 21:57:13
asal
254 orang telah melayarinya

Do SQL's `AND` and `OR` Operators Have Different Precedence, and How Does This Affect Query Results?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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:

  • AND operator mempunyai keutamaan yang lebih tinggi daripada operator OR.

Ini bermakna walaupun operator AND muncul di sebelah kanan operator OR, ia akan dinilai terlebih dahulu.

Gunakan keutamaan pada pernyataan

Dalam pernyataan yang diberikan:

  • Pernyataan pertama hanya menggunakan operator DAN, jadi keutamaan adalah mudah.
  • Pernyataan kedua menggunakan gabungan operator OR dan AND, dengan operator OR mendahului operator AND.

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan