是基于MySQL中的一列选择插入可能吗?

Abh*_*ote 9 mysql sql

在MySQL中可能的列之一上进行基于select的插入

INSERT INTO student_fees(id, name, fees) 
VALUES(1, SELECT name from students where student_id = 1, 200$) 
Run Code Online (Sandbox Code Playgroud)

如果是,那么示例将真的有帮助.

-谢谢

Joh*_*Woo 10

试试INSERT...SELECT声明

INSERT INTO student_fees(id, name, fees) 
SELECT ... -- put here the SELECT STATEMENT with condition
Run Code Online (Sandbox Code Playgroud)

如果你的列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.
Run Code Online (Sandbox Code Playgroud)

另一点是,如果您只想从student表中插入一列,则需要指定条件,因此不会出现约束错误(假设您的列ID是主键)

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM   students
WHERE  columnName = 'blahBlah'
Run Code Online (Sandbox Code Playgroud)

更新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
Run Code Online (Sandbox Code Playgroud)

您需要删除user_id上面的列,或者您需要在select语句中添加一个ID以匹配列数.