回答

收藏

联合选择中的排名规则冲突无法解决

技术问答 技术问答 225 人阅读 | 0 人回复 | 2023-09-14

我有两个查询:
/ R/ s8 Z9 h3 o1 m8 l; C首先不起作用:
8 _8 I2 d/ e. m, w- ^3 Bselect hotels.TargetCode as TargetCode from hotelsunion all select DuplicatedObjects.duplicatetargetCode as TargetCode from DuplicatedObjects where DuplicatedObjects.objectType=4因为我犯了一个错误:  P0 ^% B- {. X* [7 C4 C) l, D0 B
Cannot resolve collation conflict for column 1 in SELECT statement.第二部作品:
3 Y8 E- `) @- \  Bselect hotels.Code from hotels where hotels.targetcode is not null union all select DuplicatedObjects.duplicatetargetCode as Code from DuplicatedObjects where DuplicatedObjects.objectType=4结构:* ~9 L; o' @( [$ L: T
Hotels.Code -PK nvarchar(40)Hotels.TargetCode - nvarchar(100)DuplicatedObjects.duplicatetargetCode PK nvarchar(100)       , _9 R- O7 X4 l6 u/ K; Y
    解决方案:                                                               
0 h1 A6 T% K: k                                                                sp_help使用两个表。Hotels.TargetCode上排序规则与on上的排序规则不同DuplicatedObjects.duplicateTargetCode,因此DB不知道如何处理结果UNION。, {; x+ ^3 d, x" z) I2 ~
您可以强制其中一个排序规则与另一个排序规则匹配,或者将结果放入已定义排序规则的预定义临时表中。5 [2 K* V8 `2 Y  [3 j. B
编辑:    你可以用类似的…覆盖现有排序规则的方法。
& n- e1 i/ Y, T- ADuplicatedObjects.duplicateTargetCode COLLATE SQL_Latin1_General_CP1_CI_AS…在查询中。这将使用带有。collation的duplicateTargetCode
5 N: W- s# f9 c* |' ISQL_Latin1_General_CP1_CI_AS。您应该选择与匹配的归类hotels.TargetCode。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则