使用INNER JOIN时两个表的SQL INSERT语句

时间:2012-05-16 11:06:40

标签: sql insert inner-join mysql

我有两个表hellologin_table,下面是他们的结构

user_info
-------
some_id | name | address

login_table
-------
id | username | password

some_idid是自动增量索引。

现在我如何在INSERT

中使用INNER JOIN语句SQL

目前,我希望使用相同的some_idid

添加以下数据
`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')

这不是一个值,我想一次添加多个值..我怎样才能实现。

感谢您的帮助。

2 个答案:

答案 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);
     在此上下文中,

VALUEVALUES的同义词。两者都没有暗示值列表的数量,无论是单个值列表还是多个列表都可以使用。

答案 1 :(得分:0)

插入两个表是不可能的。问题的第二部分是可能的:您可以在一个语句中插入多行,如下所示:

insert into some_table(col1, col2) values (1,2), (3,4), (5,6);