2013-03-27 6 views
9

का उपयोग करके एक तालिका से दूसरी पंक्तियों की प्रतिलिपि बनाएं मेरे पास 158 कॉलम और 22,000 पंक्तियों वाली एक तालिका है और मेरे पास एक और खाली तालिका है जहां मैं उपयोगकर्ता से आने वाली WHERE स्थिति के आधार पर गतिशील रूप से मूल्य डालना चाहता हूं। चयन करें क्वेरी कुछ इस तरह दिखेगा: mygrist_tables सेआईएनएसईआरटी क्वेरी

चुनें * कहां suic_att> = 5 और लिंग = 'एम'

यह मैं लगभग 9,000 रिकॉर्ड वापस देता है (जैसे)। मैं इन अभिलेखों को किसी अन्य तालिका में डालना चाहता हूं (केवल यह फ़िल्टर किया गया डेटा)। क्या यह संभव है? क्या कोई मुझे इस बारे में एक विचार दे सकता है कि INSERT क्वेरी कैसा दिखाई देगी और क्या मुझे उन सभी 158 क्लॉमन्स के साथ एक और टेबल बनाने की आवश्यकता है या क्या INSERT क्वेरी गतिशील रूप से उन सभी 158 कॉलम बना सकती है? साथ ही, क्या मैं इसे एक दृश्य का उपयोग करके कर सकता हूं या एक टेबल आवश्यक होगा? अग्रिम में धन्यवाद!

+0

INSERT INTO ... का चयन करें ... –

+0

तुम मुझे एक क्वेरी जैसे कि दे सकता है कृपया? –

+2

नहीं, मुझे लगता है कि आप इसे बाहर कर सकते हैं। –

उत्तर

20

ऐसा लगता है कि आप उपरोक्त SELECT कथन और INSERT को एक नई तालिका में परिणाम चलाने के लिए नहीं चाहते हैं जो मौजूद नहीं है। यदि हां, तो यह काम करना चाहिए:

SELECT * INTO YourNewTable 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M' 

मान लिया जाये कि YourNewTable पहले से ही अस्तित्व में है, तो आप में डालने को चलाने के लिए आवश्यकता होगी: वैकल्पिक रूप से आप में वे ही नहीं हैं कॉलम निर्दिष्ट करने के लिए आवश्यकता हो सकती है

INSERT INTO YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M' 

संपादित - टिप्पणी फिर से पढ़ने पर और साकार डीबी MySQL, एक एसक्यूएल बयान से एक नया तालिका बनाने के लिए, आप का उपयोग करना चाहिए:

CREATE TABLE YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'; 

http://dev.mysql.com/doc/refman/5.0/en/create-table.html

+0

दरअसल, मेरे पास नई तालिका में केवल एक P_ID कॉलम है और यह पुरानी तालिका में मौजूद नहीं है। मैं इस क्वेरी को कैसे अपडेट कर सकता हूं? क्योंकि जब मैं क्वेरी चलाने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है: त्रुटि कोड: 1136. कॉलम गिनती पंक्ति 1 –

+0

@ शारधा जयरामन पर मूल्य गणना से मेल नहीं खाती है - आपके न्यूटेबल (Col1, Col2, आदि) में प्रवेश करें Col1, Col2, आदि चुनें। से ... - आपको उस मामले में कॉलम नामों को दुर्भाग्य से निर्दिष्ट करना होगा ... शुभकामनाएँ। – sgeddes

+0

सभी 158 कॉलम? :( –

3

आपके द्वारा चुने गए जांच उपयोग कर सकते हैं वाक्यविन्यास

SELECT * 
INTO MyNewTable 
FROM mygrist_tables WHERE suic_att>=5 AND gender='M' 

लेकिन आप सक्षम नहीं होंगे उस तालिका में डालें जो पहले से मौजूद है। अपनी मेज पहले से मौजूद है, तो आप का प्रयोग करेंगे

INSERT INTO MyOldTable 
([LIST OUT YOUR COLUMNS HERE]) 
SELECT [LIST OUT YOUR COLUMNS HERE] 
FROM mygrist_tables WHERE suic_att>=5 AND gender='M' 
+1

[यहां अपने कॉलम सूचीबद्ध करें] में सभी 158 कॉलम हार्ड कोड कैसे कर सकते हैं? क्या ऐसा करने का कोई बेहतर तरीका नहीं है? –

+0

मेरा मतलब था कि @sgeddes ने अपने उत्तर में उल्लेख किया था ... यदि आप जिस टेबल को चुन रहे हैं, उस तालिका से अलग होने से आपको कॉलम सूचीबद्ध करना होगा। यदि वे समान हैं, तो आप वास्तव में बेकार * – rbedger

+0

का उपयोग कर सकते हैं। मैं एक समान परिस्थिति में हूं, जिसमें 50 अलग-अलग कॉलम नाम मैन्युअल रूप से टाइप करना MySQL की गूंगा अपेक्षा प्रतीत होता है। मुझे लगता है कि परकोना का परिवर्तन उपकरण ही एकमात्र चीज है जो इस दुनिया में कोई समझ में आता है। – skrilled

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