ใช้ 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()