Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैसकल एक तालिका में आईडी द्वारा दूसरी तालिका से हटाएं

delete का प्रयोग करें साथ में join इस तरह:

mysql> create table a (id int);
mysql> insert into a values (1), (2), (3), (4);
mysql> create table b (id int);
mysql> insert into b values (2), (3);
mysql> delete a from a join b on a.id=b.id where b.id > 2;
mysql> select * from a;
+------+
| id   |
+------+
|    1 |
|    2 |
|    4 |
+------+

यह तालिकाओं की मनमानी संख्या को मापता है, उदा.:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB;

यह a . से हट जाएगा b . के उन रिकॉर्ड से संदर्भित सभी रिकॉर्ड जो बदले में c . से संदर्भित हैं . आप इस तरह WHERE क्लॉज भी जोड़ सकते हैं:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB
WHERE a.status='done' AND
      b.status='open' AND
      c.status='open';

यदि आप हटाए जाने वाली पंक्तियों की संख्या को सीमित करना चाहते हैं, तो ऐसा करें:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB
LIMIT 500000;

यदि आप पहली 500000 पंक्तियों को हटाना चाहते हैं, तो आपको यह परिशोधित करने की आवश्यकता है कि कौन सी पंक्तियाँ पहले हैं, इसलिए आपको पंक्तियों के बीच कुछ क्रम स्थापित करने की आवश्यकता है। दूसरे शब्दों में आपको पंक्तियों को कुछ मानदंडों के अनुसार क्रमबद्ध करना होगा और फिर इस तरह सीमित करना होगा:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB
ORDER BY a.something
LIMIT 500000;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सबसे हाल के चार को छोड़कर सभी पंक्तियों का चयन करें

  2. स्टॉपवर्ड और MySQL बूलियन फुलटेक्स्ट

  3. MySQL बनाम पीडीओ

  4. मैगेंटो बेस्टसेलर मॉड्यूल - विन्यास योग्य उत्पादों को सारांशित करना और उन्हें वापस जोड़ना

  5. रेल - कई रिश्तों में डेटा को कुशलता से खींच और गणना करता है