我正在尝试将两个表中的属性加载到一个表中。
我有一张位置表:
Id City State Country
===============================
1 New York New York USA
2 Portland Oregon USA
3 Tokyo Honshu Japan
用户表:
Id First_Name Last_Name Hometown_City Hometown_State Hometown_Country
===========================================================================
1 Brett Burr New York New York USA
2 Bucky Beaver Portland Oregon USA
3 Ranma Saotome Tokyo Honshu Japan
我正在为用户创建一个新表,而不是包含单独的Hometown
字段,而是有一个Hometown_Id
外键。
类似的东西:
Id First_Name Last_Name Hometown_Id
========================================
1 Brett Burr 1
2 Bucky Beaver 2
3 Ranma Saotome 3
但是,在将数据插入新的Users表时,我的语法有问题。
我可以使用以下命令轻松插入非基于位置的字段:
INSERT INTO newusers (Id, First_Name, Last_Name)
SELECT DISTINCT Id, First_Name, Last_Name
FROM users
但是,我不确定正确的语法,然后添加位置表中的值
答案 0 :(得分:0)
假设您有适当的约束,并且Location
表包含唯一条目,则以下内容应该有效:
INSERT INTO newusers (Id, First_Name, Last_Name, Hometown_Id)
SELECT users.Id, users.First_Name, users.Last_Name, locations.Id
FROM users
INNER JOIN locations
ON locations.City = users.Hometown_City
AND locations.State = users.Hometown_State
AND locations.Country = users.Hometown_Country
如果您需要多个位置(例如“当前居住地”条目),请使用别名并再次加入locations
表格(来自users
)。