使用SQL

时间:2018-09-26 02:02:55

标签: sql oracle join insert-into

给出此原始表: “公共表”

U_ID city        state

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

(在SQL中)我必须创建一个新表'Users',该表由所有唯一用户和另一个唯一城市组成(并且必须使用触发器和序列为每个城市定义city_id),然后使用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还是很陌生,我还没有找到一种可行的方法来完成这项工作,同时还包括空值。我显然显然需要某种方式使用城市,用户状态和每个city_id的城市,状态来匹配它们,然后将其插入新表中,但是我不知道这样做的正确命令/语法。同样重要的是要注意,不能再创建其他表来解决此问题,并且在尝试填充这些表时也必须已经定义了所有这些表。

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

1 个答案:

答案 0 :(得分:0)

您想要的查询是:

 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。它还有另一个变体,称为“右外部联接”。