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

MySQL - जब नेस्टेड चयन उस तालिका का उपयोग करता है तो तालिका से कैसे हटाएं?

आपको शायद यह त्रुटि मिल रही है:

ERROR 1093 (HY000): You can't specify target table 'table_1' for update in FROM clause.

आपको MySQL की बहु-तालिका DELETE इसके बजाय सिंटैक्स:

DELETE table_1.*
FROM   table_1,
       table_2,
       table_3
WHERE  table_1.id = table_2.table_1_id
AND    table_2.id = table_3.table_2_id
AND    table_3.id = 5

उपरोक्त क्वेरी को काम करना चाहिए, लेकिन एक सामान्य नियम के रूप में मैं इसके बजाय ANSI JOIN सिंटैक्स का उपयोग करने की सलाह दूंगा:

DELETE table_1.*
FROM   table_1
INNER JOIN table_2 on table_2.table_1_id = table_1.id
INNER JOIN table_3 on table_3.table_2_id = table_2.id
WHERE table_3.id = 5



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में संग्रहीत कार्यविधि/फ़ंक्शन परिभाषा देखें

  2. मैं MySQL में BLOB को VARCHAR में कैसे परिवर्तित करूं?

  3. मुझे अक्षांश और देशांतर को कितनी सटीकता से संग्रहीत करना चाहिए?

  4. एक सरणी के कम से कम एक तत्व वाले परिणाम प्राप्त करने के लिए Laravel क्वेरी?

  5. MySQL चयन बहुत धीमा लगता है लेकिन यह नहीं सोच सकता कि कैसे सुधार किया जाए?