मैं एक तालिका से अप्रयुक्त पंक्तियों को हटाने की कोशिश कर रहा हूं। यह मेरी समस्या का उदाहरण सरलीकृत है:एसक्यूएल का उपयोग कर डीबी टेबल से अप्रयुक्त पंक्तियों को कैसे हटाएं?
user table:
user_id user_name
--------------------
1 Mike
3 Carol
8 Eric
address table:
user_id address
-----------------------
1 [email protected]
3 [email protected]
10 [email protected]
3 [email protected]
मैं पता मेज से अप्रयुक्त पतों को हटाना चाहते हैं:
2 टेबल रहे हैं। यदि उपयोगकर्ता तालिका में किसी पते का user_id मौजूद है, तो पता अप्रयुक्त है। उदाहरण तालिका में एक अप्रयुक्त पता है: [email protected]।
मैं एसक्यूएल के साथ नया हूँ, और मेरे समाधान बदसूरत था:
DELETE FROM address
WHERE NOT EXISTS
(SELECT * FROM user WHERE address.user_id = user.user_id);
यह करने के लिए बेहतर तरीका होना चाहिए। ऐसा करने का सबसे अच्छा तरीका क्या है?
वर्ग का उपयोग किया जाता है।
मुझे बहुत बदसूरत नहीं लग रहा है, आप क्या सुधारना चाहते हैं - देखो, प्रदर्शन? –
इस तरह मैंने इसे किया होगा। एक बार जब आप रेफरेंसियल अखंडता स्थापित कर लेंगे, तो यह फिर से नहीं होगा। यदि आप रेफरेंसियल अखंडता नहीं रखते/नहीं कर सकते हैं तो "बदसूरत" आपके पास सबसे अच्छा हो सकता है। –
@ पाउल: मैं सिर्फ सामान्य अभ्यास देख रहा हूं, यह समस्या आमतौर पर हल कैसे होती है। इसके अलावा, मैं प्रदर्शन के बारे में चिंतित था: ऐसा लगता है कि चयन तालिका की प्रत्येक पंक्ति के अनुसार चयन कथन की खोज एक बार की जाती है। – SKi