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

แสดงสินค้าที่มีจำนวนสูงสุดในตาราง MySQL พร้อมรายละเอียด

การดึงสินค้าที่มีราคาสูงสุด (อาจมีหลายรายการ) ด้วย Subquery และ MAX()

เพื่อแสดงสินค้าทุกชิ้นที่มีราคาเท่ากับราคาสูงสุดในตาราง เราใช้ Subquery หา MAX(ProductAmount) แล้วกรองในคำสั่งหลัก

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

mysql> CREATE TABLE DemoTable (
    ProductId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ProductName VARCHAR(100),
    ProductAmount INT
);
Query OK, 0 rows affected (0.53 sec)

mysql> INSERT INTO DemoTable(ProductName, ProductAmount) VALUES('Product-1',60);
mysql> INSERT INTO DemoTable(ProductName, ProductAmount) VALUES('Product-2',40);
mysql> INSERT INTO DemoTable(ProductName, ProductAmount) VALUES('Product-3',75);
mysql> INSERT INTO DemoTable(ProductName, ProductAmount) VALUES('Product-4',50);
mysql> INSERT INTO DemoTable(ProductName, ProductAmount) VALUES('Product-5',75);

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+-------------+---------------+
| ProductId | ProductName | ProductAmount |
+-----------+-------------+---------------+
| 1         | Product-1   | 60            |
| 2         | Product-2   | 40            |
| 3         | Product-3   | 75            |
| 4         | Product-4   | 50            |
| 5         | Product-5   | 75            |
+-----------+-------------+---------------+
5 rows in set (0.00 sec)

คำสั่งแสดงสินค้าที่มีราคาสูงสุด

mysql> SELECT * FROM DemoTable
    WHERE ProductAmount = (SELECT MAX(ProductAmount) FROM DemoTable);

ผลลัพธ์:

+-----------+-------------+---------------+
| ProductId | ProductName | ProductAmount |
+-----------+-------------+---------------+
| 3         | Product-3   | 75            |
| 5         | Product-5   | 75            |
+-----------+-------------+---------------+
2 rows in set (0.00 sec)

คำอธิบาย

  • Subquery (SELECT MAX(ProductAmount) FROM DemoTable) คืนค่า 75
  • คำสั่งหลักกรอง ProductAmount = 75 → ได้ Product-3 และ Product-5
  • วิธีนี้ดึงข้อมูลครบถ้วน (ทุกคอลัมน์) ของสินค้าที่มีราคาสูงสุด
  • ต่างจาก ORDER BY ProductAmount DESC LIMIT 1 ที่ให้แค่ 1 แถว แม้จะมีหลายรายการเท่ากัน