Dalam mysql, anda boleh menggunakan pernyataan "SELECT" dan kata kunci "DISTINCT" untuk melakukan pertanyaan penduaan dan menapis data pendua Sintaks ialah "SELECT DISTINCT field name FROM data table name;".
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Apabila menggunakan pernyataan SELECT
untuk melaksanakan pertanyaan data mudah dalam MySQL, semua rekod yang sepadan dikembalikan. Jika sesetengah medan dalam jadual tidak mempunyai kekangan unik, nilai pendua mungkin wujud dalam medan ini. Untuk menanyakan data unik, MySQL menyediakan kata kunci DISTINCT
.
Fungsi utama kata kunci DISTINCT adalah untuk menapis data pendua dalam satu atau lebih medan dalam jadual data dan mengembalikan hanya satu keping data kepada pengguna.
Format sintaks kata kunci DISTINCT ialah:
SELECT DISTINCT <字段名> FROM <表名>;
Antaranya, "nama medan" ialah nama medan yang perlu menghapuskan rekod pendua. Gunakan koma apabila terdapat berbilang medan dipisahkan.
Perkara berikut perlu diberi perhatian apabila menggunakan kata kunci DISTINCT:
Kata kunci DISTINCT hanya boleh digunakan dalam pernyataan SELECT.
Apabila menyahduplikasi satu atau lebih medan, kata kunci DISTINCT mesti berada di hadapan semua medan.
Jika terdapat berbilang medan selepas kata kunci DISTINCT, berbilang medan akan digabungkan dan dinyahduakan, hanya apabila gabungan berbilang medan adalah sama dinyahduplikasi.
Contoh
Yang berikut menggunakan contoh khusus untuk menggambarkan cara untuk menanyakan data bukan pendua.
Struktur jadual dan data jadual pelajar dalam pangkalan data ujian adalah seperti berikut:
mysql> SELECT * FROM test.student; +----+----------+------+-------+ | id | name | age | stuno | +----+----------+------+-------+ | 1 | zhangsan | 18 | 23 | | 2 | lisi | 19 | 24 | | 3 | wangwu | 18 | 25 | | 4 | zhaoliu | 18 | 26 | | 5 | zhangsan | 18 | 27 | | 6 | wangwu | 20 | 28 | +----+----------+------+-------+ 6 rows in set (0.00 sec)
Keputusan menunjukkan terdapat 6 rekod dalam jadual pelajar.
Berikut adalah untuk menyahduplikasi medan umur jadual pelajar dan keputusan yang dijalankan adalah seperti berikut:
mysql> SELECT DISTINCT age FROM student; +------+ | age | +------+ | 18 | | 19 | | 20 | +------+ 3 rows in set (0.00 sec)
Untuk menyahduplikasi medan nama dan umur jadual pelajar, penyataan SQL dan keputusan berjalan adalah seperti berikut: Keputusan adalah seperti berikut:
mysql> SELECT DISTINCT name,age FROM student; +----------+------+ | name | age | +----------+------+ | zhangsan | 18 | | lisi | 19 | | wangwu | 18 | | zhaoliu | 18 | | wangwu | 20 | +----------+------+ 5 rows in set (0.00 sec)
Nyahduplikasi semua medan dalam jadual pelajar dan keputusan berjalan adalah seperti berikut:
mysql> SELECT DISTINCT * FROM student; +----+----------+------+-------+ | id | name | age | stuno | +----+----------+------+-------+ | 1 | zhangsan | 18 | 23 | | 2 | lisi | 19 | 24 | | 3 | wangwu | 18 | 25 | | 4 | zhaoliu | 18 | 26 | | 5 | zhangsan | 18 | 27 | | 6 | wangwu | 20 | 28 | +----+----------+------+-------+ 6 rows in set (0.00 sec)
Oleh kerana DISTINCT hanya boleh mengembalikan medan sasarannya, dan Medan lain tidak boleh dikembalikan, jadi dalam situasi sebenar, kami sering menggunakan kata kunci DISTINCT untuk mengembalikan bilangan medan unik.
Soal bilangan rekod selepas menyahgandakan medan nama dan umur dalam jadual pelajar Penyataan SQL dan hasil larian adalah seperti berikut:
mysql> SELECT COUNT(DISTINCT name,age) FROM student; +--------------------------+ | COUNT(DISTINCT name,age) | +--------------------------+ | 5 | +--------------------------+ 1 row in set (0.01 sec)
Hasilnya menunjukkan bahawa nama dan umur. medan dalam jadual pelajar ialah Selepas penyahduaan, terdapat 5 rekod.
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Bagaimana untuk membuang data pendua dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!