2012-05-12 16 views
11

एसक्यूएल में, Select into ... पंक्तियों को एक अलग (बैकअप) तालिका में कॉपी करता है। क्या यह संभव है यदि बैकअप तालिका में अलग-अलग संरचना (या अलग-अलग स्तंभ नाम) हों? यदि नहीं, तो इसे प्राप्त करने का सबसे अच्छा तरीका क्या है?विभिन्न कॉलम नामों के साथ एक तालिका में चयन करें

यहां मैं यह करना चाहता हूं: TableA में कॉलम a1,a2,a3 हैं। मैं इस तालिका से कुछ पंक्तियों को दूसरी तालिका TableB पर कॉपी करना चाहता हूं जिसमें कॉलम b1,b2,b3,b4 है। a1 की सामग्री a2b2स्तंभ नाम बात बिल्कुल भी नहीं करना, जब तक डेटा प्रकार मैच के लिए आदि

+0

एसक्यूएल का कौन सा स्वाद? एकमात्र जिसे मैं 'SELECT..INTO' के साथ पा सकता हूं वह एमएस-एसक्यूएल है, और इसके लिए प्रलेखन का तात्पर्य है कि यह एक नई तालिका तैयार करेगा - जिसमें हमेशा "सही" संरचना होनी चाहिए। – millimoose

+0

इस बिंदु के लिए धन्यवाद। मैं स्क्लाइट पर काम कर रहा हूं। मुझे यकीन नहीं था कि "चयन करें ..." sqlite में काम करता है। मैंने अभी कोशिश की, यह स्क्लाइट में काम नहीं कर रहा है। हालांकि "इसमें डालें .." इसके लिए काम करता है। – zolio

उत्तर

33

b1 में जाने के लिए,।

यदि कॉलम के डेटा प्रकार मेल नहीं खाते हैं, तो मानों को तदनुसार कास्ट करने का प्रयास करें। छोटी डमी टेबल के साथ बस आज़माएं। भ्रम से बचने के लिए स्पष्ट रूप से लक्षित कॉलम सूचीबद्ध करना सुनिश्चित करें। इस तरह:

INSERT INTO TableB (b1, b2, b3) 
SELECT a1, a2, a3 
FROM TableA 
WHERE <some condition>; 

SQLite मैनुअल here में अधिक जानकारी।

+0

नहीं कर सकते हम इस तरह स्तंभ नाम निर्दिष्ट किए बिना ऐसा करने ... payment_reject_reasons में डालने * से चयन 'de_list_reasons' इस मुझे एक त्रुटि देता है ... – mahen3d

+1

@ user1179459: आप * * यह कर सकते हैं, तो पंक्ति प्रकार मैच। अगर आपको कोई त्रुटि मिलती है, तो वे स्पष्ट रूप से नहीं करते हैं। यह फ़ॉर्म विज्ञापन-आदेश कमांड और विशेष स्थितियों के लिए भी अच्छा है। आम तौर पर आपको शामिल कॉलम का स्पेल करना चाहिए, इसलिए यदि आप किसी तालिका में कॉलम जोड़ते हैं तो कमांड नहीं तोड़ देगा। मैंने मैनुअल के लिए एक लिंक जोड़ा। –

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