我有两个表hello
和login_table
,下面是它们的结构
user_info
-------
some_id | name | address
login_table
-------
id | username | password
some_id
和id
是自动增量索引。
现在,如何在SQL
中将INSERT
语句与INNER JOIN
一起使用
目前,我想添加以下具有相同some_id
和id
的数据
`name` = John
`address` = wall street
`username` = john123
`password` = passw123
下面的代码显示了我到目前为止尝试过的内容。
insert into login_table lt
INNER JOIN user_info ui ON ui.some_id = lt.id
(ui.name, ui.address, lt.username, lt.password)
values
('John', 'wall street', 'john123', 'passw123')
这不是一个值,我想一次添加多个值..我怎么能实现。
感谢您的帮助。
如果需要以原子方式执行这两个INSERT
操作,请使用事务:
START TRANSACTION;
INSERT INTO login_table (username, password) VALUES ('john123', 'passw123');
INSERT INTO user_info (name, address) VALUES ('John', 'wall street');
COMMIT;
注:注:您的存储引擎必须支持事务才能正常工作(例如 InnoDB
(。
若要一次在表中插入多个值,请使用 INSERT
的多行形式。 如手册中所述:
INSERT
使用VALUES
语法的语句可以插入多行。为此,请包括多个列值列表,每个列表都括在括号内并用逗号分隔。例:在tbl_name(a,b,c(中插入值(1,2,3(,(4,5,6(,(7,8,9(;每行的值列表必须括在括号内。以下语句是非法的,因为列表中的值数与列名数不匹配:
在tbl_name(a,b,c(中插入值(1,2,3,4,5,6,7,8,9(;在这种情况下,
VALUE
是VALUES
的同义词。两者都不意味着值列表的数量,无论存在单个值列表还是多个列表,都可以使用这两种方法。
插入到两个表是不可能的。问题的第二部分是可能的:您可以在一个语句中插入多行,如下所示:
insert into some_table(col1, col2) values (1,2), (3,4), (5,6);
USE [ERPDb]
GO
INSERT INTO [AAA].[UserRole] ([UserId], [RoleId])
SELECT u.Id, (SELECT Id FROM [AAA].[Role] WHERE Title = 'Employee') FROM [AAA].[User] u
INNER JOIN [dbo].[BaseDealer] bd ON u.Id = bd.Id
WHERE bd.DealerType = 0
GO