--try
SELECT *
FROM Problem a INNER JOIN
      emp b ON a.AuthorID = b.[No] INNER JOIN
      train c ON a.CourseID = c.[no] COLLATE Chinese_PRC_CI_AS

解决方案 »

  1.   

    SQL排序规则:无法解决 equal to 操作的排序规则冲突解决办法
      

  2.   

    --try2
    SELECT *
    FROM Problem a INNER JOIN
          emp b ON CAST(a.AuthorID AS INT) = CAST(b.[No] AS INT) INNER JOIN
          train c ON a.CourseID = c.[no]
      

  3.   

      
      SELECT * 
      FROM Problem a 
      INNER JOIN  emp b   ON a.AuthorID collate Chinese_PRC_CI_AS = b.[No] collate Chinese_PRC_CI_AS
      INNER JOIN  train c ON a.CourseID collate Chinese_PRC_CI_AS = c.[no] collate Chinese_PRC_CI_AS
      

  4.   

    一.错误分析:   
        这个错误是因为排序规则不一致造成的,我们做个测试,比如:   
      create   table   #t1(   
      name   varchar(20)   collate   Albanian_CI_AI_WS,       
      value   int)   
        
      create   table   #t2(   
      name   varchar(20)   collate   Chinese_PRC_CI_AI_WS,           
      value   int   )   
        
      表建好后,执行连接查询:   
        
      select   *   from   #t1   A   inner   join   #t2   B   on   A.name=B.name     
        
      这样,错误就出现了:   
        
                            服务器:   消息   446,级别   16,状态   9,行   1   
                            无法解决   equal   to   操作的排序规则冲突。   
        要排除这个错误,最简单方法是,表连接时指定它的排序规则,这样错误就   
      不再出现了。语句这样写:   
        
      select   *     
      from   #t1   A   inner   join   #t2   B     
      on   A.name=B.name   collate   Chinese_PRC_CI_AI_WS