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

มีกับ GROUP BY ใน MySQL


ในการใช้ HAVING กับ GROUPBY ใน MySQL ต่อไปนี้คือ syntax ที่นี่เราได้กำหนดเงื่อนไขภายใต้ HAVING เพื่อตรวจสอบเงื่อนไขค่าสูงสุด -

เลือก yourColumnName จาก yourTableName GROUP BY yourColumnName HAVING MAX(yourColumnName)  

ให้เราดูตัวอย่างโดยการสร้างตารางใน MySQL −

mysql> สร้างตาราง WhereAfterGroupDemo-> (-> UserId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY,-> UserProcess int,-> UserThreadId int-> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (5.74 วินาที)

ตัวอย่าง

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

mysql> แทรกลงใน WhereAfterGroupDemo(UserProcess,UserThreadId) ค่า (1211,3); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงใน WhereAfterGroupDemo (UserProcess, UserThreadId) ค่า (1412,3); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.39 วินาที) mysql> แทรกลงใน WhereAfterGroupDemo (UserProcess, UserThreadId) ค่า (1510,4); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงใน WhereAfterGroupDemo (UserProcess, UserThreadId) ค่า (1511,4);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.31 วินาที)

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

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

ผลลัพธ์

<ก่อนหน้า>+---------+-------------+-------------+| รหัสผู้ใช้ | UserProcess | UserThreadId |+--------+-------------+--------------+| 1 | 1211 | 3 || 2 | 1412 | 3 || 3 | 1510 | 4 || 4 | 1511 | 4 |+---------+-------------+--------------+4 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อใช้ HAVING และ GROUP BY และรับ UserThreaId ที่มีกระบวนการน้อยกว่า 1510 -

mysql> เลือก UserThreadId จาก WhereAfterGroupDemo GROUP BY UserThreadId HAVING MAX (UserProcess) <1510;

ผลลัพธ์

<ก่อนหน้า>+-------------+| UserThreadId |+--------------+| 3 |+--------------+1 แถวในชุด (0.00 วินาที)