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

ใช้ GROUP BY และ MAX ในหลายคอลัมน์ใน MySQL หรือไม่


เพื่อให้เข้าใจ GROUP BY และ MAX ในหลายคอลัมน์ ขั้นแรกให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง GroupByMaxDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT คีย์หลัก, -> CategoryId int, -> Value1 int, -> Value2 int -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.68 วินาที) 

ตัวอย่าง

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า GroupByMaxDemo(CategoryId, Value1,Value2) (10,100,50) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงใน GroupByMaxDemo (CategoryId, Value1,Value2) ค่า (10,100,70);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที)mysql> แทรกลงใน GroupByMaxDemo (CategoryId, Value1,Value2) ค่า (10,50,100); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.22 วินาที) mysql> แทรกลงใน GroupByMaxDemo (CategoryId, Value1, Value2) ค่า (20,180,150) แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.19 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก GroupByMaxDemo;

ผลลัพธ์

<ก่อนหน้า>+----+-----------+--------+--------+| รหัส | CategoryId | Value1 | ค่าที่ 2 |+----+-----------+--------+--------+| 1 | 10 | 100 | 50 || 2 | 10 | 100 | 70 || 3 | 10 | 50 | 100 || 4 | 20 | 180 | 150 |+----+------------+---------+-------+4 แถวในชุด (0.00 วินาที)

ตัวอย่าง

ต่อไปนี้เป็นแบบสอบถามที่จะใช้ GROUP BY และ MAX ในหลายคอลัมน์ -

mysql> เลือก tbl2.CategoryId, tbl2.Value1, max(tbl2.Value2) -> จาก -> ( -> เลือก CategoryId, max(Value1) เป็น `Value1` -> จาก GroupByMaxDemo -> จัดกลุ่มตาม CategoryId -> ) tbl1 -> inner join GroupByMaxDemo tbl2 บน tbl2.CategoryId =tbl1.CategoryId และ tbl2.Value1 =tbl1.Value1 -> จัดกลุ่มตาม tbl2.CategoryId, tbl2.Value1;

ผลลัพธ์

<ก่อนหน้า>+-------------+---------+-----------------+| CategoryId | Value1 | max(tbl2.Value2) |+-----------+---------+-----------------+| 10 | 100 | 70 || 20 | 180 | 150 |+------------+----------------------+-----------------+2 แถวในชุด (0.00 วินาที)