在给定 SQL 中另外两个表的键的情况下填充一个表



给定这个原始表: "Public_Table">

U_ID city        state
1    NYC         NY
2    DET         MI
3    DEN         Co
4    NYC         NY
5    NULL        NULL

(在SQL中(我必须创建一个由所有唯一用户和所有唯一城市的另一个新表"Users"组成(并且必须使用触发器和序列为每个城市定义city_ids(,然后使用Public_table填充这两个表: "用户"

U_ID
1
2
3
4
5

和"城市">

City_ID    name    state
01         NYC     NY
02         DET     MI
03         DEN     Co

然后,我需要定义一个新表"current_user_city",该表由每个不同的用户及其关联的city_id组成,然后填充它。此外,重要的是要注意,对于城市和州具有 NULL 条目的人,他们仍应出现在新表中。例如,在这种情况下,它的外观如下:

U_ID   City_ID
1        01
2        02
3        03
4        01
5        NULL

我已经尝试了很多选项,认为这应该是一件容易的事,但我对SQL非常陌生,我还没有找到一种可能的方法来完成这项工作,同时也包括null值。我显然需要以某种方式使用用户的城市、州和每个city_id的城市、州来匹配它们并插入到新表中,但我不知道这样做的正确命令/语法。同样重要的是要注意,不能创建其他表来解决此问题,而且所有这些表都必须在尝试填充它们时已经定义。

如果您有任何想法,请告诉我!谢谢!

所需的查询是:

select Users.U_Id, Cities.City_id 
from Users Inner Join Public_Table On Users.U_Id = Public_Table.U_Id
Left Outer Join Cities On Public_Table.city = Cities.name

内连接用作集合上的交集,因此您只能获得两个表中的结果(取决于连接条件(。

左外部联接获取内部联接的所有内容,并且还从"左"表中获取值,这些值为 null 是"右"侧。它有另一个变体,称为右外连接。

最新更新