You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server:如何通过单条SQL语句根据列值为不同变量赋值

单条SQL语句批量赋值变量的解决方案

当然可以!你完全可以通过条件聚合的方式,用单条SQL语句一次性完成这三个变量的赋值,这样不仅代码更简洁,还能减少对user_config表的访问次数,提升查询效率。

直接上实现代码:

declare @country varchar(2), @currency varchar(3), @alternate_currencies varchar(100);

select 
    @country = MAX(CASE WHEN u.code = 'ctr' THEN u.value END),
    @currency = MAX(CASE WHEN u.code = 'curr' THEN u.value END),
    @alternate_currencies = MAX(CASE WHEN u.code = 'altcurr' THEN u.value END)
from user_config u 
where u.id = 'sam';

原理说明:

  1. 利用CASE语句对每一行的code进行判断,匹配到目标code时返回对应的value,否则返回NULL
  2. 用MAX()聚合函数(你也可以用MIN(),效果一致)将每个code对应的唯一value提取出来,赋值给对应的变量
  3. 整个查询只扫描一次user_config表中id='sam'的行,比三次单独查询效率更高

额外注意:

如果你的业务场景中,同一个id和code可能存在多条记录,MAX()会返回该组合下最大的value。你可以根据实际需求调整聚合逻辑,或者先确保(id, code)组合的数据唯一性(比如给这两列加联合主键)。

内容的提问来源于stack exchange,提问作者Mrigank Vallabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 01:53:12