Mengapa MySQL \'SELECT DISTINCT\' Menyebabkan Ralat Semasa Memilih Semua Medan?

Patricia Arquette
Lepaskan: 2024-11-03 19:11:29
asal
939 orang telah melayarinya

Why Does MySQL

MySQL "SELECT DISTINCT" Dilema

Dalam pengurusan pangkalan data MySQL, "SELECT DISTINCT" ialah pengubah suai pertanyaan yang digunakan untuk menghapuskan baris pendua daripada set keputusan. Walau bagaimanapun, isu biasa timbul apabila cuba memilih semua medan dalam jadual bersama-sama dengan nilai yang berbeza.

Pertanyaan SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id hanya berkesan mendapatkan nilai ticket_id yang unik. Walau bagaimanapun, apabila melanjutkan pertanyaan kepada SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id, ralat berlaku disebabkan peletakan "DISTINCT" yang salah.

Sintaks yang Betul

"DISTINCT" mesti diletakkan sejurus selepas "PILIH" dalam pernyataan pertanyaan. Berikut ialah sintaks yang betul:

SELECT DISTINCT ticket_id, OTHER_COLUMN1, OTHER_COLUMN2, ... FROM temp_tickets ORDER BY ticket_id
Salin selepas log masuk

Dalam sintaks ini, "DISTINCT" digunakan pada semua lajur yang disenaraikan dalam senarai pilihan, termasuk lajur yang digunakan untuk mengisih (ORDER BY). Oleh itu, pertanyaan akan mengembalikan baris yang berbeza untuk setiap gabungan unik nilai dalam lajur yang disenaraikan.

Penjelasan Logik

"DISTINCT" menghapuskan baris pendua jika semua lajur dalam senarai pilih mempunyai nilai yang sama. Ini bermakna jika mana-mana lajur lain mengandungi nilai yang berbeza, baris tersebut akan dianggap unik dan disertakan dalam set hasil.

Dalam sintaks yang salah SELECT foo, DISTINCT ticket_id FROM table..., pertanyaan adalah samar-samar kerana tidak jelas cara menentukan baris mana yang harus dihapuskan. Jika terdapat tiga nilai berbeza untuk ticket_id dan enam nilai berbeza untuk foo, tidak jelas tiga nilai foo yang harus dikeluarkan bersama nilai ticket_id yang berbeza. Dengan meletakkan "DISTINCT" sejurus selepas "SELECT", pertanyaan menjadi jelas dan menghapuskan sebarang kesamaran.

Atas ialah kandungan terperinci Mengapa MySQL \'SELECT DISTINCT\' Menyebabkan Ralat Semasa Memilih Semua Medan?. 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