您必须具体说明要选择的列。如果
user表有四列
id, name, username, opted_in,则必须从查询中准确选择这四列。语法如下:
INSERT INTO user (id, name, username, opted_in) SELECt id, name, username, opted_in FROM user LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id
但是,似乎没有任何理由反对
user_permission此处,因为该表中的任何列都不会插入
user。实际上,这
INSERT似乎因主键唯一性冲突而失败。
MySQL不支持同时插入多个表。您需要
INSERT使用第一个查询的最后一个插入ID在代码中执行两个语句,或者
AFTERINSERT在主表上创建触发器。
INSERT INTO user (name, username, email, opted_in) VALUES ('a','b','c',0);INSERT INTO user_permission (user_id, permission_id) VALUES (LAST_INSERT_ID(), 4)或使用触发器:
CREATE TRIGGER creat_perms AFTER INSERT ON `user`FOR EACH ROWBEGIN INSERT INTO user_permission (user_id, permission_id) VALUES (NEW.id, 4)END



