/ / एकाधिक-टेबल विलोपन पर सिंटैक्स त्रुटि - mysql, sql

एकाधिक-टेबल हटाने पर सिंटेक्स त्रुटि - mysql, sql

जब मैं इसे चलाता हूं:

DELETE FROM folders AS fo
LEFT OUTER JOIN files AS fi
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000))

... मुझे एक सिंटैक्स त्रुटि मिलती है:

# 1064 - आपके SQL सिंटैक्स में एक त्रुटि है;मैनुअल का उपयोग करने के लिए सही सिंटैक्स के लिए अपने MySQL सर्वर संस्करण से मेल खाती है की जाँच करें पास "के रूप में बाईं ओर के लिए जॉय फ़ाइलों के रूप में फाई के लिए कहाँ पंक्ति 1 पर "

कोड में आधारित है SELECT क्वेरी जो इच्छित पंक्तियों को लौटाती है। त्रुटि संदेश का कारण क्या है?

उत्तर:

उत्तर № 1 के लिए 1

यह "एक आश्चर्य नहीं है कि यह" टी काम नहीं करता है। जब मैं आपका कोड चलाता हूं तो मुझे एक सिंटैक्स त्रुटि मिलती है:

SQL त्रुटि (1064): आपके SQL सिंटैक्स में कोई त्रुटि है; चेक मैनुअल जो दाईं ओर आपके MySQL सर्वर संस्करण से मेल खाता है सिंटैक्स का उपयोग करने के लिए "के रूप में बाईं ओर के रूप में शामिल होने के लिए फाइल के लिए पंक्ति 1 पर "fi.folderId WHERE Fi.fold"

The सही सिंटैक्स है:

DELETE fo -- Note I"ve added table name
FROM folders AS fo
LEFT OUTER JOIN files AS fi
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000));

उत्तर № 2 के लिए 1
DELETE
FROM folders fo
WHERE NOT EXISTS (SELECT 1
FROM files fi
WHERE fi.folderId = fo.folderId)
AND fo.folderId IN (63, 1000)