嘿,我想知道如何使用以下查询插入新记录:
SELECT user.id, user.name, user.username, user.email,
IF(user.opted_in = 0, 'NO', 'YES') AS optedIn
FROM
user
LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id
ORDER BY user.id;
我的 INSERT
目前为止的问题是:
INSERT INTO user
SELECT *
FROM user
LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id;
但是,我不知道该怎么办 VALUE('','','','', etc etc)
使用左连接和内连接时。
所以我要做的是: User
表格:
id | name | username | password | OptIn
--------------------------------------------------------------------
562 Bob Barker bBarker BBarker@priceisright.com 1
还有 user_permission
table
user_id | Permission_id
-------------------------
562 4
这么说?
INSERT INTO user (name, username, password, email, opted_in) VALUES ('Bbarker','Bbarker','blahblahblah','Bbarker@priceisright.com',0);
INSERT INTO user_permission (user_id, permission_id) VALUES (LAST_INSERT_ID(),4);
3条答案
按热度按时间cwxwcias1#
你必须明确你选择的列。如果你的
user
表有四列id, name, username, opted_in
您必须从查询中恰好选择这四列。语法如下所示:然而,似乎没有任何理由加入反对的行列
user_permission
这里,因为该表中的所有列都不会插入到user
. 事实上,这个INSERT
主键唯一性冲突似乎注定会失败。mysql不支持同时插入多个表。你要么做两个
INSERT
语句,或者创建AFTER INSERT
主表上的触发器。或者使用触发器:
7kqas0il2#
你不能使用
VALUES
使用另一个SELECT
查询。请参见插入语法vm0i2vca3#