2011-04-21 12 views
5

से एक तालिका घटाएं मेरे पास दो टेबल हैं: ए में सभी डेटा, तालिका बी को अपने डेटा के% 25 को यादृच्छिक रूप से बनाया गया है। इसलिए ए और बी में समान कॉलम हैं। इसके अलावा कोई अद्वितीय कॉलम नहीं है।MySQL एक अन्य

मैं क्या करना चाहता हूं ए से किसी भी विचार को घटाता है?

+0

पर आंतरिक जुड़ने के समान स्थिति निर्दिष्ट करें, जब आप घटाते हैं तो मैं उलझन में हूं। क्या आपका मतलब फ़िल्टर है? यदि आप किसी तालिका को किसी अन्य पर फ़िल्टर करते हैं तो आपको यह तय करने की आवश्यकता है कि कौन से कॉलम या कॉलम दो तालिकाओं के बीच संबंधित हैं जो आप अपने फ़िल्टर पैटर्न को आधार बनाना चाहते हैं। – RetroCoder

+0

हां, मैं सभी डेटा को फ़िल्टर करना चाहता हूं, पहले से ही बी में, – osmanabi

+0

से आप किसी तालिका से बी में दिखाई देने वाले किसी भी फ़ील्ड को हटाना चाहते हैं, इसलिए अब कोई आम प्रविष्टियां नहीं हैं? –

उत्तर

0

आप (यह सिर्फ एक अनुक्रमिक संख्या हो सकती है) मूल की मेज पर एक अद्वितीय कुंजी बनाने की जरूरत है और आप का मिलान नहीं हुआ चयन कर सकते हैं या बेजोड़ रिकॉर्ड (25% या उलटा)

0

मैं अत्यधिक की सलाह देते हैं ऑटो वेतन वृद्धि, के साथ एक आईडी स्तंभ बनाने लेकिन अगर आप सिर्फ ऐसा नहीं कर सकते:

से हटाएँ एक कहां a.c1 = (ख से c1 का चयन करें) और a.c2 = (ख से c2 का चयन करें) और a.c3 = (बी से चुनें सी 3)

क्षमा करें, बस एहसास हुआ कि यह केवल एक पंक्ति के लिए काम करता है ...

ठीक है, तो केवल एक ही चीज़ मुझे मिल गया एक आईडी स्तंभ, खेद ...

8

B में उन लोगों को छोड़कर A में सभी पंक्तियों को देखने के लिए कर रही है:

SELECT * FROM A 
WHERE (field1, field2, ..., fieldN) NOT IN 
(SELECT * 
    FROM B 
) ; 

वास्तव में मेज A से हटाने के लिए पंक्तियों को B में हैं:

DELETE FROM A 
WHERE (field1, field2, ..., fieldN) IN 
(SELECT * 
    FROM B 
) ; 
+0

@ कॉनराड: यह MySQL (5.0.51) की मेरी प्रति में काम करता है। आपने किस संस्करण में इसका परीक्षण किया था? –

+0

मेरे पास 5.1 है यह मेरे लिए काम नहीं करता है – osmanabi

+0

मेरी गलती मैंने एक गैर-संपादन किया ताकि मैं अपना वोट बदल सकूं, और मैंने अपनी टिप्पणी हटा दी –

1

यह देखते हुए कि आप एक से अधिक क्षेत्रों की आवश्यकता होगी या तो उपयोग मौजूद है या जॉय तुलना कर रहे हैं एन। चूंकि आप इसे आसान बनाने के लिए देख रहे हैं, बस उपयोग मौजूद है। आप अभी भी एक जवाब की तलाश में हैं

 delete from 
     Tablea 
     Where 
     Exists(
       Select 1 
       from tableb 
       where tablea.fielda = tableb.fielda 
        And tablea.fieldb = Tableb.fieldb 
        And...) 
1

मुझे लगता है कि मेरा के अलावा आप काफ़ी मिलती-जुलती आवश्यकता है, बी सिर्फ ए के एक सबसेट है:

SELECT * FROM A WHERE NOT EXIST 
(SELECT * FROM B WHERE A.field1 = B.field1 AND A.field2 = B.field2 etc) 

आप की आवश्यकता होगी ए और बी

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