带有 INNER JOIN 的两个表的 SQL INSERT 语句

Posted

技术标签:

【中文标题】带有 INNER JOIN 的两个表的 SQL INSERT 语句【英文标题】:SQL INSERT statement for TWO TABLES at time with INNER JOIN 【发布时间】:2012-05-23 22:32:07 【问题描述】:

我有两张表hellologin_table,下面是它们的结构

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

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

some_idid 是自增索引。

现在我如何在SQL 中使用INSERT 语句和INNER JOIN

目前,我想添加以下具有相同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')

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

感谢您的帮助。

【问题讨论】:

我不认为这是可能的 - 你需要两个陈述 还有***.com/a/1382849/632951 【参考方案1】:

如果您需要原子地执行两个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 的多行形式。如the manual中所述:

INSERT 使用VALUES 语法的语句可以插入多行。为此,请包含多个列值列表,每个列表都包含在括号中并用逗号分隔。示例:

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 的同义词。两者都没有暗示值列表的数量,无论是单个值列表还是多个列表都可以使用。

【讨论】:

也将具有相同的id 即.. 在两个表中.. id 是自动递增的.. 我尝试并测试但它不起作用... @Rafee 除了上述之外,当您需要在两个表中具有相同的 id 以防自动生成 id 时,您可以使用 LAST_INSERT_ID() 。 INSERT INTO foo (auto,text) VALUES(NULL,'text'); INSERT INTO bar (id,text) VALUES(LAST_INSERT_ID(),'text'); 如何在这个查询中使用准备好的语句??【参考方案2】:

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

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

【讨论】:

【参考方案3】:
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

【讨论】:

以上是关于带有 INNER JOIN 的两个表的 SQL INSERT 语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句(inner join,left out join,right out join三者的不同

在带有 HTML 的 ASP 中使用 INNER JOIN

SQL中inner join,outer join和cross join的区别

SQL语句中LEFT JOIN和RIGHT JOIN 以及INNER JOIN的区别

mysql中inner join和outer join有啥区别?

SQL----Inner Join Outer JoinCross Join理解