小编典典

是否可能基于MySQL的某一列上的选择进行插入?

sql

在MySQL可能基于列之一的选择之后进行插入

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

如果是的话,那么示例将真正有帮助。

-谢谢


阅读 47

收藏
2021-04-07

共1个答案

小编典典

尝试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上方的列,或者需要在select语句中 添加 一个ID以匹配列数。

2021-04-07