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

SQL Server中UNION ALL语句排序规则冲突问题求助

解决UNION ALL的排序规则冲突问题

这个错误是因为两个查询的第2列(CodUnitate)使用了不同的排序规则:SQL_Latin1_General_CP1_CI_AS(不区分大小写)和SQL_Latin1_General_CP1_CS_AS(区分大小写),而UNION ALL要求对应列的排序规则必须一致。

解决方案:显式统一列的排序规则

在其中一个查询的CodUnitate列上通过COLLATE关键字指定目标排序规则,和另一列保持一致即可。以下是修改后的SQL:

select Regiune, CodUnitate, DataAprobare, UnitateaABR, ActivationDate, LocatieNoua
into #tb
from #mainunion 
where CanalVanzare in ('Sucursala', 'Alpha Point', 'Call Center', 'Broker', 'Real Estate')  

union all

select 
    Regiune, 
    CodUnitate COLLATE SQL_Latin1_General_CP1_CI_AS, -- 与#mainunion的CodUnitate排序规则对齐
    DataAprobare, 
    UnitateaABR, 
    ActivationDate, 
    LocatieNoua 
from #addon 

如果需要统一为区分大小写的排序规则,只需将COLLATE后的规则改为SQL_Latin1_General_CP1_CS_AS即可。

可选:先确认列的排序规则

如果不确定哪一方的排序规则符合业务需求,可以先查询两个临时表中CodUnitate列的当前排序规则:

-- 查看#mainunion的CodUnitate排序规则
SELECT name, collation_name 
FROM tempdb.sys.columns 
WHERE object_id = OBJECT_ID('tempdb..#mainunion') AND name = 'CodUnitate';

-- 查看#addon的CodUnitate排序规则
SELECT name, collation_name 
FROM tempdb.sys.columns 
WHERE object_id = OBJECT_ID('tempdb..#addon') AND name = 'CodUnitate';

根据业务需求选择要统一的目标排序规则后,再修改查询即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:30:49