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

ดึงแถวที่มีค่าต่ำสุดในคอลัมน์แต่ละกลุ่มด้วย MIN() และ GROUP BY ใน MySQL

ใช้ MIN() ร่วมกับ GROUP BY เพื่อหาค่าต่ำสุด (เช่น Id ต่ำสุด) ในแต่ละกลุ่ม

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    NumberOfProduct INT
);
mysql> INSERT INTO DemoTable(NumberOfProduct) VALUES (40), (40), (60), (60);

ดูข้อมูล

mysql> SELECT * FROM DemoTable;
+----+-----------------+
| Id | NumberOfProduct |
+----+-----------------+
|  1 |              40 |
|  2 |              40 |
|  3 |              60 |
|  4 |              60 |
+----+-----------------+

หา Id ต่ำสุดของแต่ละ NumberOfProduct

mysql> SELECT NumberOfProduct, MIN(Id) FROM DemoTable
    -> GROUP BY NumberOfProduct;

ผลลัพธ์

+-----------------+---------+
| NumberOfProduct | MIN(Id) |
+-----------------+---------+
|              40 |       1 |
|              60 |       3 |
+-----------------+---------+

ประยุกต์: หา record แรกของแต่ละกลุ่ม เช่น ออเดอร์แรกของลูกค้าแต่ละคน