Rumah > pangkalan data > tutorial mysql > Apakah perbezaan antara SELECT DISTINCT dan GROUP BY dalam MySQL?

Apakah perbezaan antara SELECT DISTINCT dan GROUP BY dalam MySQL?

WBOY
Lepaskan: 2023-09-18 23:53:07
ke hadapan
1259 orang telah melayarinya

MySQL 中 SELECT DISTINCT 与 GROUP BY 的区别?

SELECT DISTINCT boleh digunakan untuk memberikan nilai yang berbeza. Gunakannya untuk mengalih keluar rekod pendua dan Ia juga boleh digunakan dengan fungsi agregat. Contohnya: MAX, AVG, dsb. Ini boleh digunakan pada satu lajur.

Sekarang, saya sedang mencipta jadual untuk menggunakan SELECT DISTINCT pada lajur. Buat jadual Bantuan untuk CREATE arahan -

mysql> CREATE TABLE DistinctDemo
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.64 sec)
Salin selepas log masuk

Masukkan rekod −

mysql> INSERT into DistinctDemo values(1,'John');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(2,'John');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into DistinctDemo values(3,'Bob');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(4,'John');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into DistinctDemo values(5,'David');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(6,'Bob');
Query OK, 1 row affected (0.16 sec)
Salin selepas log masuk

Paparkan semua rekod dengan bantuan arahan SELECT. Pertanyaannya adalah seperti berikut -

mysql> SELECT * from DistinctDemo;
Salin selepas log masuk

Selepas melaksanakan pertanyaan di atas, kami akan mendapat output berikut −

+------+-------+
| id   | name  |
+------+-------+
| 1    | John  |
| 2    | John  |
| 3    | Bob   |
| 4    | John  |
| 5    | David |
| 6    | Bob   |
+------+-------+
6 rows in set (0.00 sec)
Salin selepas log masuk

Di atas, kami mempunyai enam rekod, antaranya John dan Bob adalah pendua. Kita boleh memohon DISTINCT untuk Alih keluar rekod pendua. Sintaksnya adalah seperti berikut −

SELECT distinctcolumn_name from yourTableName order by column_name;
Salin selepas log masuk

Kini, saya menggunakan pertanyaan di atas untuk mengalih keluar pendua-

mysql> SELECT distinct name from DistinctDemo;
Salin selepas log masuk

Berikut ialah output

rreee#🎜 Pilih kumpulan mengikut boleh digunakan Dapatkan data daripada lajur yang berbeza dan kumpulan kepada satu atau lebih lajur. Ini juga boleh digunakan dengan fungsi agregat. Contohnya:SUM,AVG dll.

Pertama, saya mencipta jadual dengan bantuan arahan CREATE -

lajur ini juga boleh digunakan dengan fungsi agregat. Contohnya: SUM, AVG, dsb.

Pertama, saya mencipta jadual menggunakan arahan CREATE −
+-------+
| name  |
+-------+
| John  |
| Bob   |
| David |
+-------+
3 rows in set (0.00 sec)
Salin selepas log masuk

Selepas mencipta jadual, saya memasukkan rekod ke dalam jadual seperti yang ditunjukkan di bawah −

mysql> CREATE table GroupDemo1
-> (
-> id int,
-> name varchar(100),
-> address varchar(100)
-> );
Query OK, 0 rows affected (0.68 sec)
Salin selepas log masuk
#🎜🎜 , kita boleh memaparkan semua rekod dengan bantuan arahan SELECT −

mysql> INSERT into GroupDemo1 values(1,'John','US');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into GroupDemo1 values(2,'Bob','UK');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into GroupDemo1 values(3,'David','US');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into GroupDemo1 values(4,'David','US');
Query OK, 1 row affected (0.15 sec)
Salin selepas log masuk

Berikut ialah output-

mysql> SELECT * from GroupDemo1;
Salin selepas log masuk

Saya akan memohon GROUP BY untuk mengetahui bilangan kejadian alamat yang sama. inilah dia Sintaks −

+------+-------+---------+
| id   | name  | address |
+------+-------+---------+
| 1    | John  | US      |
| 2    | Bob   | UK      |
| 3    | David | US      |
| 4    | David | US      |
+------+-------+---------+
4 rows in set (0.00 sec)
Salin selepas log masuk

Mari kita gunakan sintaks di atas untuk GROUP BY -

SELECT column_name1,......N aggregate function( ) from yourTableName group by
column_name;
Salin selepas log masuk

Berikut ialah output -

mysql> SELECT address, count(*) from GroupDemo1 group by address;
Salin selepas log masuk
#🎜🎜

Atas ialah kandungan terperinci Apakah perbezaan antara SELECT DISTINCT dan GROUP BY dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan