Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Semua Lajur dengan DISTINCT dalam MySQL?
MySQL: Memahami DISTINCT untuk Memilih Berbilang Lajur
Apabila berurusan dengan baris pendua dalam jadual MySQL, kata kunci DISTINCT boleh digunakan untuk mendapatkan semula unik nilai, tetapi ia juga boleh menimbulkan had apabila memilih berbilang lajur. Artikel ini menangani isu mendapatkan semula semua medan semasa menggunakan DISTINCT, bersama-sama dengan penyelesaian untuk memilih entri terbaharu untuk baris pendua.
Penghadan DISTINCT untuk Berbilang Lajur
DISTINCT bukan fungsi yang digunakan hanya pada lajur tertentu. Sebaliknya, ia adalah pengubah suai pertanyaan yang mempengaruhi semua lajur dalam senarai pilihan. Ia mengalih keluar baris pendua di mana nilai semua lajur adalah sama.
Sintaks Betul untuk DISTINCT
DISTINCT mesti muncul serta-merta selepas SELECT (bersama-sama dengan pengubah suai pertanyaan lain, seperti SQL_CALC_FOUND_ROWS). Mengikuti pengubah suai pertanyaan, nama lajur hendaklah disenaraikan.
Contohnya:
<code class="sql">SELECT DISTINCT foo, ticket_id FROM table...</code>
Pertanyaan ini akan mengeluarkan satu baris untuk setiap gandingan nilai yang berbeza merentas ticket_id dan foo.
Penyelesaian untuk Memilih Semua Lajur
Tidak mungkin untuk memilih semua medan dan masih menggunakan DISTINCT kerana ia memerlukan semua lajur adalah sama untuk pengalihan keluar pendua. Walau bagaimanapun, terdapat penyelesaian yang boleh digunakan untuk memilih entri terbaharu untuk baris pendua:
<code class="sql">SELECT t1.* FROM table AS t1 JOIN ( SELECT ticket_id, MAX(row_id) AS max_id FROM table GROUP BY ticket_id ) AS t2 ON t1.ticket_id = t2.ticket_id AND t1.row_id = t2.max_id</code>
Pertanyaan ini menggunakan subquery untuk mencari row_id maksimum bagi setiap ticket_id, dan kemudian menyertai jadual utama dengan subquery untuk memilih baris terkini bagi setiap ticket_id.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Semua Lajur dengan DISTINCT dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!