2008-11-05 5 views
5

मैं कैसे कर सकते हैं:एसक्यूएल में, एक तालिका से एक पंक्ति को कैसे हटाएं यदि उसके पास किसी अन्य तालिका में कोई संबंधित पंक्ति नहीं है?

foo कहां आईडी = 1 और बार नहीं होता है आईडी == 1

विस्तार करने के लिए से हटाते हैं, कैसे मैं मेज foo से id = 1 के साथ एक पंक्ति को हटा सकते हैं, केवल तभी तालिका bar में id = 1 के साथ कोई पंक्ति नहीं है।

+0

मुझे लगता है कि आपको अधिक जानकारी देने की आवश्यकता है। -> बार में आईडी नहीं है == 1 मुझे समझ में नहीं आता है। – EvilTeach

+0

बार बस एक और कॉलम या टेबल है? –

उत्तर

19
DELETE FROM foo WHERE id=1 AND NOT EXISTS (SELECT * FROM bar WHERE id=1) 

मैं आपको लगता है कि foo और बार मतलब यह सोचते हैं रहा हूँ तालिकाओं हैं, और आप foo से एक रिकॉर्ड को हटाने के लिए अगर यह बार में मौजूद नहीं है चाहता हूँ।

+0

बस ठीक है :) – fmsf

11

एक में शामिल होने का उपयोग कर:

delete f 
from foo f 
left 
join bar b on 
     f.id = b.id 
where f.id = 1 and 
     b.id is null 
+0

मेरे ज्ञान के लिए, केवल SQL सर्वर और MySQL समर्थन वाक्यविन्यास। –

+0

सही, यह ansi sql नहीं है। –

संबंधित मुद्दे