2012-08-10 42 views
8

是基於選擇以下插入的列可能的一個在MySQL是基於MySQL的列中的某一列進行插入的可能嗎?

INSERT INTO student_fees(id, name, fees) 
VALUES(1, SELECT name from students where student_id = 1, 200$) 

如果是的話,並例子將真正幫助。

-Thanks

+0

[MySQL手冊](http://dev.mysql.com/doc/refman/5.5/en/insert-select.html)明確指出它是可能的。但是你的語法是錯誤的。 – Jocelyn 2012-08-10 09:13:43

回答

9

嘗試INSERT...SELECT聲明

INSERT INTO student_fees(id, name, fees) 
SELECT ... -- put here the SELECT STATEMENT with condition 

如果您的列IDauto incremented,則不必指定1否則會導致錯誤。

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students   -- this will select all students on the table 
         -- and add $200 on thier fees. 

另一點是,如果你只想要插入來自student的表一列,你需要喲指定的條件,所以你不會得到約束錯誤(假設您的列ID是主鍵

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students 
WHERE columnName = 'blahBlah' 

更新1

看到你的評論,你有這個疑問

INSERT INTO coupon_allotment (page_id, offer_id, coupon_code, user_id) 
SELECT page_id, 4, 'ABC'  -- number of columns mismatch, right? 
FROM pages_discounts_association 
WHERE discount_id = 4 

你需要刪除上述user_id列或您需要添加ID在SELECT語句以匹配列數。

+0

INSERT INTO coupon_allotment(page_id,offer_id,coupon_code,user_id)SELECT page_id,4,'ABC'FROM pages_discounts_association WHERE discount_id = 4這是我的實際查詢,你能改正這個嗎? – 2012-08-10 09:17:16

+0

這是一些列不匹配。我剛更新了我的查詢,看看它現在是否有效。 – 2012-08-10 09:19:28

+0

是的工作感謝您的幫助:) – 2012-08-10 09:20:11

3

只需使用普通INSERT INTO ... SELECT語法和選擇其他字段常量,如下所示:

INSERT INTO student_fees(id, name, fees) 
SELECT 1, `name`, '200$' FROM students 
+0

does not work following is is actual query:INSERT INTO'coupon_allotment'(page_id,offer_id,coupon_code,user_id)SELECT page_id,4,'ABC'FROM'pages_discounts_association' WHERE'discount_id' = 4 – 2012-08-10 09:13:39

+0

@Abhishek您在實際查詢中的表有4列(page_id,offer_id,coupon_code,user_id),而在'SELECT'中你只有3個。你必須在'SELECT'中有許多列,就像你在INSERT語句中爲這個查詢工作一樣! – Sirko 2012-08-10 09:16:54

+0

@Abhishek:你必須在'VALUES(...)'和'SELECT'中有相同數量的字段。在你的情況:4場,然後3場。 – Jocelyn 2012-08-10 09:17:07

2

試試這個:

INSERT INTO student_fees(id, name, fees) 
Select 1, name,'200$' from students 
相關問題