我有两个表hello
和login_table
,下面是他们的结构
user_info
-------
some_id | name | address
login_table
-------
id | username | password
some_id
和id
是自动增量索引。
现在我如何在INSERT
INNER JOIN
语句SQL
目前,我希望使用相同的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')
这不是一个值,我想一次添加多个值..我怎样才能实现。
感谢您的帮助。
答案 0 :(得分:10)
如果您需要以原子方式执行两个INSERT
操作,请使用事务:
START TRANSACTION;
INSERT INTO login_table (username, password) VALUES ('john123', 'passw123');
INSERT INTO user_info (name, address) VALUES ('John', 'wall street');
COMMIT;
N.B。您的存储引擎必须支持有效的交易(例如InnoDB
)。
要一次向表中插入多个值,请使用INSERT
的多行格式。如the manual中所述:
使用VALUES
语法的
INSERT
语句可以插入多行。为此,请包含多个列值列表,每个列值都括在括号内并用逗号分隔。例如:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);每行的值列表必须括在括号内。以下语句是非法的,因为列表中的值的数量与列名的数量不匹配:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3,4,5,6,7,8,9);在此上下文中,
VALUE
是VALUES
的同义词。两者都没有暗示值列表的数量,无论是单个值列表还是多个列表都可以使用。
答案 1 :(得分:0)
插入两个表是不可能的。问题的第二部分是可能的:您可以在一个语句中插入多行,如下所示:
insert into some_table(col1, col2) values (1,2), (3,4), (5,6);