Sql 从已联接的表创建表

Sql 从已联接的表创建表,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

我不知道这个问题是否适合这里

因此,我已经创建了一个表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   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中没有匹配项,因此不在仅仅内部联接的结果中。