Sql 从已联接的表创建表
我不知道这个问题是否适合这里 因此,我已经创建了一个表X,其中包含来自表Y的值。 现在我只需要从表X中获取值,然后左键连接表Y中的更多值并创建表ZSql 从已联接的表创建表,sql,Sql,我不知道这个问题是否适合这里 因此,我已经创建了一个表X,其中包含来自表Y的值。 现在我只需要从表X中获取值,然后左键连接表Y中的更多值并创建表Z Table X ID Car Color 1 BMW Red 1 Ford Blue 2 VW Black Table Y ID Car Color Height Weight 1 BMW Red 2 1000 1 Ford Blue 4 1500 1
Table X
ID Car Color
1 BMW Red
1 Ford Blue
2 VW Black
Table Y
ID Car Color Height Weight
1 BMW Red 2 1000
1 Ford Blue 4 1500
1 Tesla Green 3 850
1....
我尝试在ID上使用内部联接,但现在我从表Y获得所有ID,而不仅仅是从表X获得ID
ID CAR Color Height Weight
1 BMW Red 2 1000
1 Ford Blue 4 1500
1 Tesla Green 3 850
但我需要得到这个:
ID Car Color Height Weight
1 BMW Red 2 1000
1 Ford Blue 4 1500
我知道我可以使用表X和左键连接这些值,但是有没有“更干净、更快”的方法?我原以为可以用一个内部连接来完成,但它不起作用。
或者我必须在身份证上,在汽车上,在颜色上进行内部连接吗?
我希望这个问题是可以理解的
create table tableZ AS
select tx.ID, ty.CAR,ty.Height,ty.Weight
from .... ty
INNER JOIN ... tx on (tx.ID = ty.ID)
ID
对于不是表唯一ID的列来说是一个非常糟糕的名称。无论如何,您显然希望在ID、car和color上加入,所以请这样做:
create table tableZ AS
select tx.ID, ty.CAR, ty.Height, ty.Weight
from ty
INNER JOIN tx on tx.ID = ty.ID and tx.car = ty.car and tx.color = ty.color;
(如果您单独在
id
上加入,则将每个tx行与相同id
的每个ty行合并)您使用的是哪一行?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加一个连接,postgresql
,oracle
,sqlserver
,db2
,…现在我无法在创建的表上左键连接,键是ID。只想左键连接t2.ID=t1.ID上的XXX.XXX t2。我是否需要以另一种方式左键联接它,在另一个表上…我已经尝试过了,但它也不起作用。将内部联接
更改为左键联接
,您就有了一个外部联接。(internal
和OUTER
是可选关键字;如果愿意,可以省略它们。)这将返回VW/Black的一行,该行在ty中没有匹配项,因此不在仅仅内部联接的结果中。