在一个存储过程中,我需要将INSERT
一个 long 的结果UNION
放入一个临时表中。该WHERE
子句对于所有表都是相同的,位于SELECT DISTINCT
.
为了可读性而简化,它是这样的:
INSERT INTO #MyTemp
SELECT col1, col2, col3 FROM tab1 WHERE col1 in (SELECT DISTINCT myId FROM TabIds) UNION
SELECT col1, col2, col3 FROM tab2 WHERE col1 in (SELECT DISTINCT myId FROM TabIds) UNION
SELECT col1, col2, col3 FROM tab3 WHERE col1 in (SELECT DISTINCT myId FROM TabIds) UNION
.
.
.
SELECT col1, col2, col3 FROM tab20 WHERE col1 in (SELECT DISTINCT myId FROM TabIds)
虽然TabIds
是一个小型临时表,通常有 3-6 条记录,但这似乎非常无用。
有一个更好的方法吗?
总结我的问题:
有没有一种方法我可以SELECT DISTINCT myId FROM TabIds
只做一次并将其分配给一种数组/列表/集合(而不是另一个临时表),然后在WHERE
子句中使用它,如果有办法,对于这样的小(3-6 记录)临时表?