मैं दो तालिकाओं निम्नलिखित की तरह है जाँच नकल इस यूनियन के साथ इस दो टेबल:सीमा, चुनाव यूनिअन कॉलम
SELECT cod, des
FROM parameters1
UNION
SELECT cod, des
FROM parameters2
और मैं इस परिणाम सेट प्राप्त:
+------+-----+
| cod | des |
+------+-----+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 1 | mmm |
मैं यूनिअन डुप्लिकेट cod
स्तंभ के लिए केवल जाँच सीमित करना चाहते हैं, तो मैं कि 1 कॉड परिणाम सेट में दोहराया गया हो बचना चाहते हैं (parameters1) (जब वहाँ अलग नाम और एक ही कॉड के साथ एक रिकॉर्ड है), मैं पहले मेज से नाम प्राप्त करना चाहते हैं:
+------+-----+
| cod | des |
+------+-----+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
अद्यतन तो मैं parameters1 तालिका (DELETE FROM parameters1 WHERE cod = 1
) से रिकॉर्ड 1
को दूर मैं इस परिणाम सेट मिलना चाहिए: केवल एक ही क्षेत्र के लिए एक संघ की डुप्लीकेट जाँच सीमित करने के लिए
+------+-----+
| cod | des |
+------+-----+
| 1 | mmm | ---> FROM parameters2
| 2 | bbb |
| 3 | ccc |
क्या यह संभव है या कुछ खेतों? कैसे ?
समाधान को मल्टीडाबेस वातावरण (एमएसएसक्यूएल, पोस्टग्रेएसक्यूएल, माईएसक्यूएल) पर काम करना चाहिए।
[एक स्तंभ के लिए एसक्यूएल सर्वर अलग संघ] (http://stackoverflow.com/questions/7338884/sql-server-distinct-union-for-one-column) – ruakh
कृपया तर्क समझाने के संभावित डुप्लिकेट पंक्ति '(1,' aaa ')' पंक्ति '(1,' mmm ') पर क्यों चुना जाता है' उदाहरण के लिए क्योंकि 'aaa' <'mmm'', शायद? स्वीकृत उत्तर एक मनमानी पंक्ति चुनने लगता है। – onedaywhen
यह तर्क है कि मैंने परिभाषित किया है क्योंकि एक तालिका में प्राथमिकता है ... – aleroot