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

MySQL DELETE FROM UNION सबक्वेरी के साथ IN कंडीशन द्वारा

इसके बजाय इस संस्करण को आजमाएं:

DELETE FROM startpoint
    WHERE id IN (select *
                 from ((SELECT id FROM stairs WHERE building = 123)
                       UNION
                      (SELECT id FROM lift WHERE building = 123)
                       UNION
                      (SELECT id FROM qrcodeid WHERE building = 123)
                )

मुझे लगता है कि यह मुद्दा एक उपश्रेणी की परिभाषा के साथ एक रहस्यमय मुद्दा है। एक सबक्वेरी एक select है कथन, जबकि एक union select . का संयोजन है बयान।

संपादित करें:

वास्तव में, यदि आप दक्षता चाहते हैं, तो आप इस दृष्टिकोण का बिल्कुल भी उपयोग नहीं करेंगे। मैं सिर्फ यह दिखाने की कोशिश कर रहा था कि त्रुटि को कैसे ठीक किया जाए। एक बेहतर समाधान होगा:

DELETE sp FROM startpoint sp
    WHERE EXISTS (select 1 from stairs s where s.building = 123 and s.id = sp.id) or
          EXISTS (select 1 from lift l where l.building = 123 and l.id = sp.id) or
          EXISTS (select 1 from qrcodeid q where q.building = 123 and q.id = sp.id);

stairs(id, building) . पर अनुक्रमणिका की अनुशंसा की जाती है , lift(id, building) , और qrcodeid(id, building)



  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_fetch_array का PDO::FETCH_NUM . में अनुवाद करें

  3. SQL LIKE% अंदर सरणी

  4. MySQL में समान प्राथमिक कुंजी को संदर्भित करने वाली 2 विदेशी कुंजी

  5. MySQL, एक क्वेरी के साथ कई टेबल अपडेट करें