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

แบบสอบถาม MySQL ไปยัง GROUP BY หลายคอลัมน์


คุณสามารถใช้ IF() ถึง GROUP BY ได้หลายคอลัมน์ เพื่อให้เข้าใจแนวคิด ให้เราสร้างตาราง แบบสอบถามในการสร้างตารางมีดังนี้

mysql> สร้างตาราง MultipleGroupByDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerId int, -> ProductName varchar(100) -> );Query OK, 0 แถวได้รับผลกระทบ (0.59 วินาที)

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

mysql> แทรกลงในค่า MultipleGroupByDemo(CustomerId,ProductName) (1000,'Product-1');Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงในค่า MultipleGroupByDemo (CustomerId,ProductName) (1001,'Product -2');เคียวรีตกลง, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า MultipleGroupByDemo(CustomerId,ProductName)(1001,'Product-2'); เคียวรีตกลง, 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกเข้าไป MultipleGroupByDemo(CustomerId,ProductName) values(1001,'Product-2');แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า MultipleGroupByDemo(CustomerId,ProductName)(1002,'Product-3');แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.09 วินาที)mysql> แทรกลงในค่า MultipleGroupByDemo(CustomerId,ProductName) (1002,'Product-3'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า MultipleGroupByDemo (CustomerId, ProductName) (1003,'Product-4');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)

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

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

ผลลัพธ์ที่ได้จะเป็นดังนี้

<ก่อนหน้า>+----+-----------+-------------+| รหัส | รหัสลูกค้า | ชื่อผลิตภัณฑ์ |+----+-----------+-------------+| 1 | 1000 | สินค้า-1 || 2 | 1001 | สินค้า-2 || 3 | 1001 | สินค้า-2 || 4 | 1001 | สินค้า-2 || 5 | 1002 | สินค้า-3 || 6 | 1002 | สินค้า-3 || 7 | 1003 | Product-4 |+----+-----------+-------------+7 แถวในชุด (0.00 วินาที)

นี่คือข้อความค้นหา GROUP BY หลายคอลัมน์

mysql> SELECT CustomerId if( ProductName ='Product-2', 1, 0 ) -> FROM MultipleGroupByDemo -> GROUP BY ProductName , CustomerId;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----------------------------------------------------------- ------+| รหัสลูกค้า | if( ProductName ='Product-2', 1, 0 ) |+------------+--------------------- -------------------+| 1000 | 0 || 1001 | 1 || 1002 | 0 || 1003 | 0 |+------------------------------------------------------------- -----+4 แถวในชุด (0.00 วินาที)

นี่คือข้อความค้นหาอื่น

mysql> เลือก CustomerId,MAX(IF(ProductName ='Product-2', 1,0)) จากกลุ่ม MultipleGroupByDemo ตาม CustomerId;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----------------------------------------------------------- --------+| รหัสลูกค้า | MAX(IF(ProductName ='Product-2', 1,0)) |+-----------+-------------------------- ----------------------------------+| 1000 | 0 || 1001 | 1 || 1002 | 0 || 1003 | 0 |+------------------------------------------------------------- --------+4 แถวในชุด (0.00 วินาที)