繁体   English   中英

SQL从同一表的不同行中将值选择为多个变量

[英]SQL select values into multiple variables from different rows in same table

我有一个结构如下的表:

|ROWID |COUNTRY|PRICE|
|1     |US     |15|
|1     |UK     |10|
|1     |EU     |12|

我需要从多个行中将值选择为变量,以在整个存储过程中使用,这样做是这样的:

DECLARE @USprice int,@UKprice int
SELECT @USprice = T.Price FROM Table T WHERE T.Country = 'US'
SELECT @UKprice = T.Price FROM Table T WHERE T.Country = 'UK'

问题是运行此select的最快方法是什么? 实际上,我需要获得十几行信息,因此需要关注性能。

这样做会更好吗:

DECLARE @USprice int,@UKprice int
SELECT @USprice = CASE WHEN T.Country = 'US' THEN T.Price ELSE @USprice END
,@UKprice = CASE WHEN T.Country = 'UK' THEN T.Price ELSE @UKprice END
FROM Table T WHERE T.Country IN ('US','UK')

我不会采用第一种方法,该方法要求为每个变量单独命中表,这效率不高

这是使用第二种方法实现目标的正确方法 您需要在case语句的顶部添加Min/Max聚合。

DECLARE @USprice INT,
        @UKprice INT
SELECT @USprice = Max(CASE WHEN T.Country = 'US' THEN T.Price ELSE NULL END),
       @UKprice = Max(CASE WHEN T.Country = 'UK' THEN T.Price ELSE NULL END)
FROM   Table T
WHERE  T.Country IN ( 'US', 'UK' ) 

考虑到T.Country列不重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM