If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
पिछले topic में आपने DELETE JOIN का use करके एक साथ एक से अधिक tables से data delete किया था , ठीक इसी तरह से table data को delete भी कर सकते हैं।
MySQL में आप JOIN के साथ एक बार में ही एक से अधिक table के columns को update कर सकते हैं।
अब चूंकि tables को join किया गया है तो आप INNER JOIN या LEFT JOIN का use need के according कर सकते हैं।
UPDATE table1, table2
[INNER JOIN | LEFT JOIN] join_condition
SET
table1.column1=value1,
table2.column1=value1
WHERE [condition if any]
Explanation
table1, table2 , वो tables हैं जिनके columns को JOIN करके update करना चाहते हैं और , अगर आपको condition apply करनी है तो need के according किसी भी तरह की condition जैसे AND , OR , LIKE , IN या BETWEEN भी use कर सकते हैं।
ध्यान रहे कि आप UPDATE के बाद table1 को हटा देते हैं, तो update query केवल table2 के records को update करेगी , इसी तरह यदि आप table2 को हटा देते हैं, तो केवल table1 से rows को update करेगा ।
अब कुछ examples देख लेते हैं , जिससे आपको और अच्छे से समझ आ जाये।
Suppose, हमारे पास users
name की एक table है , जिसमे कुछ इस तरह से records available हैं।
+----+-------------+ | id | name | +----+-------------+ | 2 | Tom Holland | | 5 | John Quill | +----+-------------+
और एक दूसरी table भी है user_orders
नाम की जिसमे user के orders हैं कि user ने कौन सा product किस price पर buy किया है , और कुछ इस तरह से records मौजूद हैं।
+----+---------+---------+-------+ | id | user_id | product | total | +----+---------+---------+-------+ | 2 | 2 | Clothes | 200 | | 3 | 2 | Mobile | 20000 | +----+---------+---------+-------+
example के लिए मैं users table से id=2
के record का name
और user द्वारा buy किये गए product price
को एक साथ update करना चाहता हूँ , तो उसके लिए कुछ इस तरह से query होगी -
UPDATE users
INNER JOIN user_orders ON user_orders.user_id=users.id
SET users.name='Tom Cruise' , user_orders.total=500
WHERE user_orders.product='Clothes';
Output
Query OK, 2 rows affected (0.017 sec) Rows matched: 2 Changed: 2 Warnings: 0
Output में आप देख सकते हैं कि 2 rows affected हैं , means एक record users table में update हुआ है और एक record user_orders से।
जिस तरह से आपने INNER JOIN किया उसी तरह से आप LEFT या RIGHT JOIN भी use कर सकते हैं , difference सिर्फ इतना रहेगा कि INNER JOIN query में join condition match होने पर ही records update होते हैं , जबकि LEFT या RIGHT JOIN query में main table से तो record update होंगे ही साथ में join condition match होने पर दूसरी table के भी records update होंगे।
अगर table name बहुत बड़े हैं तो AS Operator का use करके table alias भी apply कर सकते हैं , जैसे नीचे दी गयी query भी same तरह से काम करेगी।
UPDATE users AS u
INNER JOIN user_orders AS uo ON uo.user_id=u.id
SET u.name='Tom Cruise' , uo.total=500
WHERE uo.product='Clothes';