我想让我的插入查询具有到Users表的内连接。
表格的例子如下:
用户:
id | fullName | preferredName | email | mobile | password
1 | Pan Lim | Lim | limpan45@gmail.com | 64557812 | passone
2 | Gong My | Gong | gong45@gmail.com | 61345671 | passtwo
订单:
id | userid(Foreign key of "id" from Users | timestamp
1 | 1 | 2016-06-10 11:45:31
我正在尝试插入与仅知道Users表中的用户标识相关的订单。它显示如下:
订单:
id | userid(Foreign key of "id" from Users | timestamp
1 | 1 | 2016-06-10 11:45:31
2 | 2 | 2016-08-14 12:45:31
但是当我测试我的SQL查询时,它在此查询中有错误。
INSERT INTO Orders (id, userid, timestamp)
SELECT Orders.id, Orders.userid, Orders.timestamp FROM Users INNER JOIN Orders ON Orders.id = Users.id
答案 0 :(得分:3)
如果您的ID在订单表中非自动递增。
INSERT INTO orders ( id,userid, timestamp)
SELECT o.userid , o.timestamp FROM users u INNER JOIN orders o ON o.userid = u.id
如果您的ID在订单表中自动递增。
INSERT INTO orders ( userid, timestamp)
SELECT o.userid , o.timestamp FROM users u INNER JOIN orders o ON o.userid = u.id
答案 1 :(得分:1)
如果Orders.Id是唯一的,则SQL查询将失败。 您正试图将一个或多个现有记录插入Orders表中,因此它将与Id重复。我不确定您要实现的目标,但这应该有效:
INSERT INTO Orders ( userid, timestamp)
SELECT Orders.userid, Orders.timestamp FROM Users INNER JOIN Orders ON Orders.id = Users.id
编辑:Orders.Id应该是订单中记录的唯一ID,而Users.Id应该是用户表中记录的唯一ID?在这种情况下,你不能加入这两个。