Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Semua Lajur dengan DISTINCT dalam MySQL?

Bagaimana untuk Memilih Semua Lajur dengan DISTINCT dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 03:44:30731semak imbas

How to Select All Columns with DISTINCT in 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!

Kenyataan:
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