การกรองข้อมูลที่ต้องการด้วย HAVING
การใช้งานคำสั่งของ HAVING ใน SQL จะมีลักษณะคล้ายๆกับคำสั่ง WHERE คือเป็นการเลือกข้อมูลที่ต้องการ แต่ทั้งสองคำสั่งมีความแตกต่างกันที่
-
WHERE ใช้สำหรับการเลือกข้อมูลโดยกระทำกับทุกแถว
-
HAVING ใช้สำหรับกรองข้อมูลที่ถูกจัดกลุ่มโดยคำสั่ง GROUP BY
SELECT member_id,book_id FROM table_name WHERE member_id=1
member_id |
book_id |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
2 |
1 |
3 |
เพิ่มคำสั่ง GROUP BY เพื่อนับจำนวนครั้งของหนังสือที่ยืม
SELECT member_id,book_id,COUNT(*) FROM table_name WHERE member_id=1 GROUP BY book_id
member_id |
book_id |
COUNT(*) |
1 |
1 |
3 |
1 |
2 |
2 |
1 |
3 |
1 |
ใช้คำสั่ง HAVING เพื่อกำหนดเงื่อนไขต้องการรายชื่อหนังสือที่ถูกยืมมากกว่า 1 ครั้ง
SELECT member_id,book_id,COUNT(*) FROM table_name WHERE member_id=1 GROUP BY book_id HAVING COUNT(*)>1
member_id |
book_id |
COUNT(*) |
1 |
1 |
3 |
1 |
2 |
2 |