【问题标题】:SQL Server : error joining two tables from two different databasesSQL Server:连接来自两个不同数据库的两个表时出错
【发布时间】:2020-12-06 18:49:58
【问题描述】:

我正在使用 SSMS,我正在尝试连接来自两个不同数据库的两个表,它们都位于同一服务器中。

这两个表有一个共同的id 列。

我的查询是:

select * 
from db1.dbo.EPH e 
join db2.dbo.SALARIE s on e.id = s.id

我收到此错误:

无法解决“Latin1_General_CI_AI”和“French_CI_AS”在等于操作中的排序规则冲突。

【问题讨论】:

标签: sql sql-server join


【解决方案1】:

您的两个数据库没有相同的排序规则。您需要在联接中指定“COLLATE DATABASE_DEFAULT”子句。

select * from db1.dbo.EPH e join db2.dbo.SALARIE s on e.id COLLATE DATABASE_DEFAULT=s.id COLLATE DATABASE_DEFAULT

它应该可以解决问题。

【讨论】:

    【解决方案2】:

    在 Microsoft SQL Server 中,可以在列级别设置排序规则。当您在查询中比较(或连接)具有不同排序规则的两列时。

    例子:

    SELECT * FROM db1.dbo.EPH e
    JOIN db2.dbo.SALARIE s
    ON e.id COLLATE DATABASE_DEFAULT = s.id
    

    【讨论】:

      【解决方案3】:

      尝试使用 COLLATE Latin1_General_CI_AS

      select * 
      from db1.dbo.EPH e 
      join db2.dbo.SALARIE s on
      e.id COLLATE Latin1_General_CI_AS = s.id
      COLLATE Latin1_General_CI_AS
      

      【讨论】:

        猜你喜欢
        • 2018-04-27
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多