我有两个疑问:
首先不起作用:
select hotels.TargetCode as TargetCode from hotels
union all
select DuplicatedObjects.duplicatetargetCode as TargetCode
from DuplicatedObjects where DuplicatedObjects.objectType=4
因为我得到错误:
Cannot resolve collation conflict for column 1 in SELECT statement.
第二部作品:
select hotels.Code from hotels where hotels.targetcode is not null
union all
select DuplicatedObjects.duplicatetargetCode as Code
from DuplicatedObjects where DuplicatedObjects.objectType=4
结构:
Hotels.Code -PK nvarchar(40)
Hotels.TargetCode - nvarchar(100)
DuplicatedObjects.duplicatetargetCode PK nvarchar(100)
最佳答案
使用 sp_help
在两张 table 上。 hotels.TargetCode 上的排序规则与 DuplicatedObjects.duplicateTargetCode
上的排序规则不同,所以数据库不知道如何处理结果 UNION
.
您可以对其中一个强制执行新的排序规则以匹配另一个,或者将结果放入预定义的临时表/表中,该表/表已经定义了排序规则。
编辑:您可以使用以下内容覆盖现有的排序规则...
DuplicatedObjects.duplicateTargetCode COLLATE SQL_Latin1_General_CP1_CI_AS
...在查询中。这将使用带有排序规则的重复目标代码
SQL_Latin1_General_CP1_CI_AS
.您应该选择与 hotels.TargetCode
匹配的排序规则.
关于sql - 无法解决联合选择中的排序规则冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673673/