MySQL HAVING Clause In Hindi | HAVING Clause In MySQL In Hindi

📔 : MySQL 🔗

MySQL में Where Clause के अलावा Having का use भी records को filter करने के लिए किया जाता है , difference यह है कि Where Clause का use normally filter करने के लिए किया जाता है वहीँ Having Clause का use ज्यादातर grouped records को filter करने के लिए किया जाता है।

Normally Having Clause को Group By के साथ किसी condition के bases पर use किया जाता है

Group By Syntax

HAVING clause का basic syntax कुछ इस तरह से होता है -

SELECT column_list FROM table_name WHERE [where_condition if any] GROUP BY column_name HAVING group_condition;

MySQL HAVING clause को ORDER BY , LIMIT से पहले और SELECT , WHERE , GROUP BY के बाद evaluate करता है , तो query run करते समय यह इसका ध्यान रखें।

MySQL Having Clause Example

Suppose, हमारे पास users name की एक table है , जिसमे कुछ इस तरह से records available हैं।

+----+-------------+
| id | name        |
+----+-------------+
|  1 | Tom         |
|  2 | Tom Holland |
|  4 | john Doe    |
|  5 | John Quill  |
+----+-------------+

और एक दूसरी table भी है user_orders नाम की जिसमे user के orders हैं कि user ने कौन सा product किस price पर buy किया है , और कुछ इस तरह से records मौजूद हैं।

+----+---------+---------+-------+---------------------+
| id | user_id | product | total | created_at          |
+----+---------+---------+-------+---------------------+
|  1 |       1 | Shoes   |   455 | 2023-02-25 08:49:43 |
|  2 |       2 | Clothes |   200 | 2023-02-26 03:49:43 |
|  3 |       2 | Mobile  | 20000 | 2023-02-26 08:32:25 |
|  4 |       1 | Grocery |   999 | 2023-02-25 11:27:43 |
|  5 |       1 | Books   |  1100 | 2023-02-24 18:24:22 |
+----+---------+---------+-------+---------------------+

अब मुझे सिर्फ वो particular user चाहिए जिन्होंने total 10000 से ज्यादा के products buy किये हैं , इसके लिए कुछ इस तरह से query होगी -

SELECT users.id AS user_id, users.name,SUM(user_orders.total) AS paid_amount FROM users JOIN user_orders ON user_orders.user_id=users.id GROUP BY user_id HAVING paid_amount > 10000;

Output

+---------+-------------+-------------+
| user_id | name        | paid_amount |
+---------+-------------+-------------+
|       2 | Tom Holland |       20200 |
+---------+-------------+-------------+

Having Clause With Multiple Conditions

जरूरी नहीं है कि Having Clause में सिर्फ single column पर condition apply करें आप अपनी need के according AND या OR operator का use करके multiple conditions रख सकते हैं।

जैसे अब मुझे वो particular user चाहिए जिन्होंने total 2000 से कम के products buy किये हैं , और date 2023-2-25 से ज्यादा या बराबर है -

SELECT users.id AS user_id, DATE(user_orders.created_at) AS order_date, users.name, SUM(user_orders.total) AS paid_amount FROM users LEFT JOIN user_orders ON user_orders.user_id=users.id GROUP BY user_id,order_date HAVING paid_amount < 2000 AND order_date >= '2023-2-25';

Output

+---------+------------+------+-------------+
| user_id | order_date | name | paid_amount |
+---------+------------+------+-------------+
|       1 | 2023-02-25 | Tom  |        1454 |
+---------+------------+------+-------------+

Related Topics :

Rahul Kumar

Rahul Kumar

Hi ! I'm Rahul Kumar Rajput founder of learnhindituts.com. I'm a software developer having more than 4 years of experience. I love to talk about programming as well as writing technical tutorials and blogs that can help to others. I'm here to help you navigate the coding cosmos and turn your ideas into reality, keep coding, keep learning :)

Get connected with me. :) LinkedIn Twitter Instagram Facebook

b2eprogrammers