【发布时间】:2021-08-11 16:56:02
【问题描述】:
我有两个表,它们具有相同的列,但名称不同,Request 和 Archive_Request。这些表包含很多记录。我想从两个表中插入临时表 #TEMPTABLE 的值,但没有任何有效的性能
This is temp table #TEMPTABLE (RequestId, RequestType, RequestStatus)
下面是从表中选择数据的查询。
SELECT RequestID, RequestType, RequestStatus
FROM Request
WHERE ((UPPER(SOURCE) IN ('KMP', 'DOCUSIGN')
AND UPPER(RequestStatus) IN ('RETURNED REQUEST', 'COMPLETED')))
AND (CreatedBy = @MyID);
SELECT RequestID, RequestType, RequestStatus
FROM Archive_Request
WHERE ((UPPER(SOURCE) IN ('KMP', 'DOCUSIGN')
AND UPPER(RequestStatus) IN ('COMPLETED')))
AND (CreatedBy = @MyID);
我已尝试使用此查询在临时表中插入数据,但它不起作用。能给我解决办法吗
INSERT INTO #TEMPTABLE (RequestId, RequestType, RequestStatus)
SELECT B.RequestId, C.RequestId, B.RequestType, C.RequestType, B.RequestStatus, C.RequestStatus
FROM Request AS B , Archive_Request AS C
WHERE ((UPPER(B.SOURCE) IN ('KMP', 'DOCUSIGN') and ((UPPER(C.SOURCE) IN ('KMP', 'DOCUSIGN')
AND UPPER(B.RequestStatus) IN ('RETURNED REQUEST', 'COMPLETED')))
AND UPPER(C.RequestStatus) IN ('COMPLETED')))
AND (B.CreatedBy = @MyID) AND (C.CreatedBy = @MyID) ;
【问题讨论】:
-
当您遇到错误时,请发布完整的错误消息。您的尝试肯定会遇到一个。此处不需要连接 - 尤其是使用 old-style join syntax 的连接,您应该避免。
-
您为什么在
WHERE的列中使用UPPER?如果您使用区分大小写的排序规则,那么'KMP'应该不 匹配'kmp'。如果不是,它们只会损害查询的性能。
标签: sql sql-server