जवाबों:
हाँ, बिल्कुल, लेकिन अपने सिंटैक्स की जाँच करें।
INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM courses
WHERE cid = 2
आप एक ही प्रकार का एक स्थिरांक रख सकते हैं gid
, न कि केवल 1 का, निश्चित रूप से। और, मैंने अभी cid
मूल्य बनाया है ।
OUTPUT
क्लॉज है , जो आपको एक और तालिका में सम्मिलित करने की अनुमति देता है। मुझे नहीं लगता कि MySQL का कोई समकक्ष है। आप एक अस्थायी तालिका बना सकते हैं , उस तालिका में चयन कर सकते हैं, फिर courses
उस तालिका से पॉप्युलेट कर सकते हैं, फिर जो कुछ भी आवश्यक हो, उसके लिए अस्थायी तालिका का उपयोग करें।
हाँ यही है। तुम लिख सकते हो :
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
या आप चयन के किसी अन्य समूह से मान प्राप्त कर सकते हैं ...
सही सिंटैक्स: चयन वर्तनी गलत थी
INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci
ज़रूर, क्या आप gid के लिए उपयोग करना चाहते हैं? एक स्थिर मूल्य, PHP var, ...
1234 का स्थिर मूल्य इस प्रकार हो सकता है:
INSERT INTO courses (name, location, gid)
SELECT name, location, 1234
FROM courses
WHERE cid = $cid
मुझे लगता है कि आपका INSERT बयान गलत है, सही सिंटैक्स देखें: http://dev.mysql.com/doc/refman/5.1/en/insert.html
संपादित करें: जैसा कि एंड्रयू ने पहले ही बताया ...
निःसंदेह तुमसे हो सकता है।
हालाँकि एक बात पर ध्यान दिया जाना चाहिए: INSERT INTO SELECT
कथन एक तालिका से डेटा की प्रतिलिपि बनाता है और इसे दूसरी तालिका में सम्मिलित करता है और इसके लिए स्रोत और लक्ष्य तालिका मिलान में डेटा प्रकारों की आवश्यकता होती है। यदि दी गयी तालिका स्तंभों से डेटा प्रकार से मेल नहीं खाता (यानी सम्मिलित करने का प्रयास VARCHAR
में INT
या, TINYINT
में INT
MySQL सर्वर एक फेंक देते हैं) SQL Error (1366)
।
तो सावधान रहें।
यहाँ कमांड का सिंटैक्स है:
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3 FROM table1
WHERE condition;
साइड नोट: उदाहरण के लिए, अपने में कास्टिंग का उपयोग करके विभिन्न प्रकार के स्तंभ प्रविष्टि समस्या को दरकिनार करने का एक तरीका है SELECT
:
SELECT CAST('qwerty' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;
इस रूपांतरण ( CAST()
के पर्याय है CONVERT()
बहुत उपयोगी है अगर आपके टेबल में एक ही तालिका स्तंभ पर विभिन्न वर्ण सेट (जो संभवतः डेटा हानि हो सकती है अगर ठीक से संभाला नहीं) है)।
आपकी क्वेरी के लिए सही सिंटैक्स है:
INSERT INTO courses (name, location, gid)
SELECT (name, location, gid)
FROM courses
WHERE cid = $cid