请建议一个更好的方式(性能)写下面的逻辑。假设我有大约5个类似的查询,其中位置id必须为不同的区域提取,并存储在不同的列中,以便进行进一步的逻辑。
SELECT
@location1 = locid
FROM
table1 t1
JOIN table2 t2 ON t1.key1 = t2.key2 and t1.flag = 1
WHERE
t1.area = 'ABC'
SELECT
@location2 = locid
FROM
table1 t1
JOIN table2 t2 ON t1.key1 = t2.key2 and t1.flag = 1
WHERE
t1.area = 'DEF'
2条答案
按热度按时间t5zmwmid1#
一种方法是使用条件聚合来填充变量—但是,请注意,这(公平地说,也是问题中的查询)假设每个变量
t1.area
结果集中只有一条记录。62o28rlo2#
您可以在一个查询中传递area的所有有效值,然后将数据存储在一个表变量中。
可以使用该表变量进一步读取数据,因为现在只需查询有限的数据集即可获得记录。