【发布时间】:2018-03-05 09:11:10
【问题描述】:
我有一个有 4 列的临时表
question_tbl:
TempTable -- 查找组合
id | Code1 | Code2 | code3
--------+----------+-------------+---------
111 | AA | A1 | X
222 | BB | B1 | Y
333 | CC | C1 | Z
444 | DD | D1 | ZZ
Code1 和 Code2 是 tableA 中的列,Code3 是 tableB 中的列
表 A 有记录
DeptID | Code1 | Code2 |
--------+----------+-------------+---------
A | AA | A1 |
B | BC | B1 |
C | CC | C1 |
D | DC | D1 |
E | DD | D1 |
表 B 有记录
DeptID | Code1
--------+----------+-------------+---------
A | X
B | XX
C | Z
D | YY
E | Z Z
我必须使用 temptable 来查找表 A 和 B。 如果我使用两个表找到匹配的 3 个组合,那么我会附加 Id TableB 中从 Temp 到 DeptId 的值 所以我的最终结果应该是
DeptID | Code1
--------+----------+-------------+---------
A111 | X
C333 | Z
E444 | ZZ
我目前使用的查询如下。它工作正常。但是给 我是一个性能问题,因为表 A 和 B 中的记录数更多 超过20000
SELECT B.DeptID + T.ID
FROM TableA A
INNER JOIN #TMP T
ON T.Code3 = A.Code3
INNER JOIN TableB B
ON B.Code1 = T.Code1 AND B.Code2 = T.Code2
还有其他替代方法来查找表格上的组合吗? 请推荐
【问题讨论】:
标签: sql sql-server-2012 sql-server-2016