2013-01-09 16 views
5

में डालें, मैं आइटम्स को एक टेबल से दूसरे में MySQL का उपयोग करके स्थानांतरित करना चाहता हूं।MYSQL किसी अन्य तालिका से मानों को एक कॉलम

INSERT INTO items_rooms (item_id, room_id,x,y,n) 
SELECT id, room_id,x,y,z 
    FROM `items_phoenix` 

यह काम करता है, लेकिन मैं विभिन्न स्तंभों में प्रत्येक मान के स्थान पर एक स्तंभ में एकाधिक मान सम्मिलित करने के लिए इच्छुक हूँ:

यह मैं वर्तमान में क्या उपयोग है।

तालिका items_rooms में, मैं वेल्यू एक्स और वाई चाहते हैं items_phoenix items_rooms में एक स्तंभ में रखा जाना से:

उदाहरण के लिए

यदि x = 5 और y = 2, क्या मैं इसे आइटम्स_रूम में सहेज सकता हूं: एक कॉलम: 5.2 प्रत्येक मान के लिए अलग-अलग स्तंभों के बजाय?

क्षमा करें अगर यह भ्रमित है!

उत्तर

12

आप अपनी SELECT कॉलम-सूची में अभिव्यक्तियों का उपयोग कर सकते हैं।

INSERT INTO items_rooms (item_id, room_id, x_dot_y, n) 
SELECT id, room_id, CONCAT(x,'.',y), z 
    FROM `items_phoenix` 
+0

बस मुझे जो चाहिए था। धन्यवाद !! – zuc0001

+1

यह संभव है क्योंकि MySQL निर्दिष्ट प्रकार के बारे में परवाह नहीं करता है और तदनुसार रूपांतरित करेगा। – tadman

0

आप एक साधारण मामला है, उदाहरण के लिए एक संयोजन का उपयोग कर सकते हैं: जब तक चयन सूची में स्तंभों और स्तंभों की संख्या और डेटा प्रकार में गंतव्य तालिका मैच में के रूप में, आप कुछ इस तरह कर सकते हैं:

INSERT INTO items_rooms (
    item_id, 
    room_id, 
    x_and_y, 
    n) 
SELECT 
    id, 
    room_id, 
    CONCAT(x, '.', y), 
    z 
FROM `items_phoenix` 
+0

माइक्रोसॉफ्ट एसक्यूएल सर्वर स्ट्रिंग concatenation के लिए '+' का उपयोग करता है, लेकिन MySQL नहीं करता है। –

+0

एक MySQL विशेषज्ञ नहीं है, इसलिए मूल रूप से SQL सर्वर सिंटैक्स था (@Zaffy, मेरे पास '+" था। मूल संपादन में "+", इसलिए यह अंकगणितीय जोड़ नहीं था)। सही MySQL वाक्यविन्यास को प्रतिबिंबित करने के लिए संपादित किया गया। –

0

हाँ, स्तंभ पाठ जानकारी स्टोर कर सकते हैं, तो

बस CONCAT या CONCAT_WS मूल्यों

INSERT INTO items_rooms (item_id, room_id, my_value, n) 
SELECT id, room_id, CONCAT_WS('.', x, y), z 
FROM `items_phoenix` 

SQL Fiddle DEMO

0

आप निश्चित रूप से ऐसा कर सकते हैं। इस पर उपयोगी उत्तर देखें। हालांकि, आपको यह विचार करना चाहिए कि यह एक अच्छा विचार है या नहीं। एक बार जब आप एक कॉलम में किसी प्रकार की स्ट्रिंग अभिव्यक्ति में अलग-अलग स्तंभों को denormalize करते हैं, तो आपने कुछ ऐसा बनाया है जो बनाए रखना बहुत मुश्किल है और इसके खिलाफ पूछताछ भी करना है। आप ऐसा करने में अपने डेटा को अपने आप कम उपयोग कर रहे हैं।

+2

यह एक टिप्पणी होनी चाहिए ... –

+0

@ जोसेफ: मेरे लिए यह कहना मुश्किल है। मैंने इसे एक टिप्पणी करने पर विचार किया। लेकिन फिर मुझे लगा कि एसओ का मार्गदर्शन और परामर्श पहलू इस मामले में सवाल के लिए भी महत्वपूर्ण था। – DWright

-2
$table_To_Get_From = mysql_query("SELECT * FROM items_phoenix (id, room_id,x,y,z)"); 
if($table_To_Get_From){ 
    $table = mysql_fetch_assoc($table_To_Get_From); 
    $values = array($table['id'],$table['room_id'],$table['x'],$table['y'],$table['z']); 
    mysql_query("INSERT INTO items_rooms (item_id, room_id,x,y,n) 
     VALUES ($values[0],$values[1],$values[2],$values[3],$value[4])"); 
} 

मैं उन्हें तार नहीं किया है, तो आप '$ मूल्यों [NUM]' का उपयोग करने

यह ऐसा लगता है जैसे आप चाहते थे कि क्या कोई मान है दर्ज हो जाएगा पड़ सकता है।

+0

यह काम करना चाहिए। –

+3

आप कैसे जानते हैं कि ओपी PHP का उपयोग कर सकता है? क्या होगा यदि वह डेल्फी, सी ++, या जो कुछ भी उपयोग करता है। प्रश्न केवल MySQL के बारे में है –

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