Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL SELECT * กับ DISTINCT ID (ใช้ GROUP BY)

ใช้ GROUP BY id เพื่อดึงแถวแรกของแต่ละ ID ที่ซ้ำกัน (MySQL อนุญาตให้ SELECT * กับ GROUP BY)

ไวยากรณ์

SELECT * FROM yourTableName GROUP BY yourIdColumn;

ตัวอย่างการใช้งาน

สร้างตาราง DistinctIdDemo (ไม่มี PK, ID ซ้ำได้):

mysql> CREATE TABLE DistinctIdDemo (Id INT, Name VARCHAR(20), Age INT);

เพิ่มข้อมูล (Id 1 ซ้ำ 3 ครั้ง, Id 2 ซ้ำ 2 ครั้ง):

mysql> INSERT INTO DistinctIdDemo VALUES(1,'Mike',23),(2,'Sam',24),(1,'Carol',23),(1,'John',28),(3,'David',26),(2,'Larry',29);

ข้อมูลทั้งหมด (6 แถว)

+------+-------+------+
| Id   | Name  | Age  |
+------+-------+------+
| 1    | Mike  | 23   |
| 2    | Sam   | 24   |
| 1    | Carol | 23   |
| 1    | John  | 28   |
| 3    | David | 26   |
| 2    | Larry | 29   |
+------+-------+------+

คำสั่ง GROUP BY Id

mysql> SELECT * FROM DistinctIdDemo GROUP BY Id;

ผลลัพธ์ (3 แถว - เลือกแถวแรกของแต่ละ Id)

+------+-------+------+
| Id   | Name  | Age  |
+------+-------+------+
| 1    | Mike  | 23   |
| 2    | Sam   | 24   |
| 3    | David | 26   |
+------+-------+------+

⚠️ ข้อควรระวัง: MySQL เลือกแถว "แรกที่เจอ" ซึ่งอาจไม่คาดคิดได้ (Non-deterministic) ใน MySQL 5.7+ ที่มี ONLY_FULL_GROUP_BY จะ Error - ควรระบุคอลัมน์ชัดเจนหรือใช้ ANY_VALUE()