2010-04-14 13 views
5

क्या ऐसा कुछ करना संभव है:एसक्यूएल के साथ यह संभव है?

INSERT INTO table(col1, col2) VALUES(something_from_another_table, value); 

something_from_another_table SQL कमांड होने के साथ? जैसे, ऐसा कुछ है जो मैं कर सकता हूं जो इसके बराबर है:

INSERT INTO table(col1, col2) VALUES((SELECT value FROM table2 WHERE id = 3), value); 

उत्तर

18

हाँ

INSERT INTO table(col1, col2) 
SELECT value1, 'value2' FROM table2 WHERE id = 3 

कहाँ मान 1 'अन्य तालिका' और मान 2 से मूल्य है एक निरंतर है कि आप उस का चयन करें बयान में शामिल किया है।

2

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

उदाहरण में विशेष रूप से एक बार देख ले: की तरह, वहाँ कुछ मुझे लगता है कि करने के लिए बराबर है कर सकते हैं।

मैं SELECT, UPDATE, DELETE और INSERT एसक्यूएल का पूरा वाक्य रचना पढ़ने की सिफारिश करेंगे के साथ शुरू आदेश देता है। फिर subqueries और DDL पर विस्तार करें।

धीरे-धीरे जाएं और उदाहरणों को पूरा करें।

5

इस प्रयास करें:

INSERT INTO table(col1, col2) 
SELECT table2.value1, value2 FROM table2 WHERE table2.id = 3; 
0

तुम निश्चित रूप से कर सकते हैं। इसे नीचे दिए गए उदाहरण के समान काम करना चाहिए;

INSERT INTO Store_Information (store_name, Sales, Date) 
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010) 
0

जब आप सम्मिलित कथन पर कीवर्ड "मान" निर्दिष्ट करते हैं तो आप केवल एक मान डालने का प्रयास कर रहे हैं। वर्तमान तरीका है कि ऐसा करने के लिए एक चर में "something_from_another_table" का मान निर्दिष्ट करने और फिर रहा है, हमेशा एक रिकॉर्ड दर्ज हो जाएगा इस रास्ते पर अपने डालने

DECLARE @ANYVALUE AS VARCHAR(40) 
SELECT @ANYVALUE = ANYFIELD FROM table2 WHERE id = 3 
INSERT INTO table1 (FIELD1, FIELD2) VALUES(@ANYVALUE, VALUE2) 

बनाते हैं। दूसरा सही तरीका एन रिकॉर्ड डालेगा जहां कथन फ़िल्टर कर सकता है।

INSERT INTO Store_Information (store_name, Sales, Date) 
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010) 
संबंधित मुद्दे