在转换值以匹配第三个 table 时使用 Insert Into Select
Using Insert Into Select while converting values to match a third table
我不知道如何简单地表达我的问题,但情况是这样的。我有两个 tables,数据如下:
证书状态Table:
CertStatus_KEY CertStatus_ID
1 ACTIVE
2 EXPIRED
证书导入Table:
Status
ACTIVE
EXPIRED
EXPIRED
ACTIVE
EXPIRED
ACTIVE
我需要做的是获取 CertImport.Status 列,将所有这些状态转换为与 CertStatus_ID 匹配的 CertStatus_KEY,然后将所有这些信息复制到第三个 table 有两列,因此数据最终如下所示。
认证Table:
Certification_KEY CertStatus_KEY
1 1
2 2
3 2
4 1
5 2
6 1
我正在尝试使用 Insert Into Select 语句,但我收到一条错误消息,指出子查询返回了超过 1 个值。这是我得到的:
INSERT INTO Certification (CertStatus_KEY)
SELECT (
SELECT CertStatus_KEY from CertStatus where CertStatus_ID in (
SELECT Status from CertImport)
)
简化,目标是将CertImport.Status转换为匹配CertStatus.CertStatus_ID对应的CertStatus.CertStatus_KEY值,然后将该值插入Certification.CertStatus_KEY。
谢谢。
Insert into Certification (CertStatus_Key)
select cs.Certstatus_Key
from CertStatus cs
inner join CertImport ci on cs.CertStatus_Id = ci.Status;
注意:在 SQL 服务器中,无法保证结果 return 与 select 的顺序,除非指定了 order by 子句(或者至少有聚集索引)。对于像这样的小数据集,您会得到您要求的结果,但对于更大的数据集,则无法保证。实际上,设计似乎从一开始就很糟糕,CertImport 应该有一个 ID 列?
我不知道如何简单地表达我的问题,但情况是这样的。我有两个 tables,数据如下:
证书状态Table:
CertStatus_KEY CertStatus_ID
1 ACTIVE
2 EXPIRED
证书导入Table:
Status
ACTIVE
EXPIRED
EXPIRED
ACTIVE
EXPIRED
ACTIVE
我需要做的是获取 CertImport.Status 列,将所有这些状态转换为与 CertStatus_ID 匹配的 CertStatus_KEY,然后将所有这些信息复制到第三个 table 有两列,因此数据最终如下所示。
认证Table:
Certification_KEY CertStatus_KEY
1 1
2 2
3 2
4 1
5 2
6 1
我正在尝试使用 Insert Into Select 语句,但我收到一条错误消息,指出子查询返回了超过 1 个值。这是我得到的:
INSERT INTO Certification (CertStatus_KEY)
SELECT (
SELECT CertStatus_KEY from CertStatus where CertStatus_ID in (
SELECT Status from CertImport)
)
简化,目标是将CertImport.Status转换为匹配CertStatus.CertStatus_ID对应的CertStatus.CertStatus_KEY值,然后将该值插入Certification.CertStatus_KEY。
谢谢。
Insert into Certification (CertStatus_Key)
select cs.Certstatus_Key
from CertStatus cs
inner join CertImport ci on cs.CertStatus_Id = ci.Status;
注意:在 SQL 服务器中,无法保证结果 return 与 select 的顺序,除非指定了 order by 子句(或者至少有聚集索引)。对于像这样的小数据集,您会得到您要求的结果,但对于更大的数据集,则无法保证。实际上,设计似乎从一开始就很糟糕,CertImport 应该有一个 ID 列?