DELETE FROM `mytbl`
INNER JOIN (
SELECT 1 FROM `mytbl`
GROUP BY `duplicated_column` HAVING COUNT(*)=2
) USING(`id`)
संपादित करें:
मेरे बुरा, ऊपर क्वेरी काम नहीं करेगा।
मान लिया जाये कि तालिका संरचना:
id
पूर्णांक auto_increment
num
पूर्णांक # < - यह (मैं जाँच) डुप्लिकेट मानों
साथ स्तंभ निम्न क्वेरी MySQL में काम करेगा है:
DELETE `mytbl` FROM `mytbl`
INNER JOIN
(
SELECT `num` FROM `mytbl`
GROUP BY `num` HAVING COUNT(*)=2
) AS `tmp` USING (`num`)
क्वेरी उन पंक्तियों को हटा देगी जिनमें 2 (अधिक नहीं है या ई एलएसई) num
कॉलम में डुप्लिकेट मान।
संपादित करें (फिर से):
मैं num
स्तंभ पर एक कुंजी जोड़ने के लिए सुझाव देते हैं।
संपादित करें (# 3):
मामले में
कि लेखक दोहराया पंक्तियों नष्ट करने के लिए चाहता था, निम्नलिखित (यह मेरे लिए काम किया) MySQL के लिए काम करना चाहिए:
DELETE `delete_duplicated_rows` FROM `delete_duplicated_rows`
NATURAL JOIN (
SELECT *
FROM `delete_duplicated_rows`
GROUP BY `num1` HAVING COUNT(*)=2
) AS `der`
संभालने जबकि तालिका संरचना है:
CREATE TABLE `delete_duplicated_rows` (
`num1` tinyint(4) DEFAULT NOT NULL,
`num2` tinyint(4) DEFAULT NOT NULL
) ENGINE=MyISAM;
@Matt - मैंने देखा कि तुम वहाँ क्या किया :) – jensgram
हे, मुझे लगता है कि यह व्याख्या के लिए खुला है, लेकिन पहला वाक्य अनिवार्य है, तो .. :) – Matt
यह एक साक्षात्कार प्रश्न की तरह लगता है। कौन सा डीबी, वहाँ आईडी हैं। क्या आप temp टेबल का उपयोग करने की अनुमति है? –