2012-09-21 11 views
5

मेरे पास यह प्रश्न है। मैं AgentsResultLinks-Table से सभी इकाइयों को हटाना चाहता हूं, जिनके पास परिणाम-तालिका में किसी इकाई का लिंक नहीं है। मैं एक एकल प्रश्न के साथ एक समाधान चाहता हूँ। मुझे '*' के कारण त्रुटि मिली।एमएसएसएलएल (कॉम्पैक्ट) जॉइन-क्वेरी जॉइन

DELETE AgentResultLinks.* 
FROM AgentResultLinks LEFT JOIN Results 
ON AgentResultLinks.ResultID = Results.ID 
WHERE Results.ID IS NULL 

क्या कोई मुझे इस क्वेरी को कॉम्पैक्ट डेटाबेस के लिए vaid mssql क्वेरी में परिवर्तित करने में मदद कर सकता है? प्रदर्शन बहुत महत्वपूर्ण है।

+0

[यह लिंक जवाब तुम क्यों अद्यतन नहीं कर सकते बताते हैं (या शायद हटाएं) तालिका जो SQL सर्वर सीई पर उस पर शामिल हो गई है।] (http://stackoverflow.com/a/6934448/491243) –

उत्तर

4
DELETE FROM AgentResultLinks 
where ResultID not in(select distinct ID from Results) 
+1

यह प्रश्न मैंने इस पोस्ट को लिखने से पहले कोशिश की थी। यह बहुत धीमी है। लेकिन यह काम करता है। – Gepro

+0

तालिका में कितनी पंक्ति है? – jainvikram444

+0

एजेंट रेसल्ट लिंक> 500000 और परिणाम> 20000 – Gepro

9

बस .* से AgentResultLinks.*

DELETE Agent 
FROM AgentResultLinks Agent 
LEFT JOIN Results R 
     ON Agent.ResultID = R.ID 
WHERE R.ID IS NULL; 

देखें हटाने DELETE वाक्य रचना: DELETE (Transact-SQL)

See SQLFiddle Example

+0

ए एक त्रुटि मिली (FROM के पास), यह मान्य नहीं है – Gepro

+0

@Gepro तालिका में उपनाम दें और इसका उपयोग करें। उत्तर अपडेट किया गया। – hims056

+0

मुझे एक ही त्रुटि मिली – Gepro

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