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

WHERE vs HAVING ใน MySQL?


เราสามารถใช้ประโยคเงื่อนไขที่เรียกว่า WHERE Clause เพื่อกรองผลลัพธ์ออก เมื่อใช้ส่วนคำสั่ง WHERE นี้ เราสามารถระบุเกณฑ์การเลือกเพื่อเลือกระเบียนที่ต้องการจากตารางได้ ส่วนคำสั่ง HAVING ระบุเงื่อนไขการกรองสำหรับกลุ่มของแถวหรือการรวม

คำสั่ง WHERE ไม่สามารถใช้กับฟังก์ชันการรวมได้ ในขณะที่ HAVING สามารถใช้กับฟังก์ชันการรวมได้ ต่อไปนี้เป็นตัวอย่าง −

เรามาสร้างตารางกันเถอะ

mysql> สร้างตาราง WhereDemo   -> (   -> Price int   -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.64 วินาที)

กำลังแทรกระเบียนลงในตาราง

mysql> แทรกลงในค่า WhereDemo (100) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า WhereDemo (200) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า WhereDemo ( 300); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า WhereDemo (400); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)

เพื่อแสดงรายการทั้งหมด

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

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

<ก่อนหน้า>+-------+| ราคา |+-------+| 100 || 200 || 300 || 400 |+-------+4 แถวในชุด (0.00 วินาที)

สามารถใช้คำสั่ง HAVING ร่วมกับฟังก์ชันการรวมได้

mysql>  select sum(Price) จาก WhereDemo HAVING Sum(Price)> 500;

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

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

ที่นี่ หากเราจะลองใช้ WHERE กับฟังก์ชันการรวม จะเกิดข้อผิดพลาด

mysql> เลือก sum(Price) จาก WhereDemo โดยที่ Sum(Price)> 200;ERROR 1111 (HY000):การใช้ฟังก์ชันกลุ่มไม่ถูกต้อง