2012-06-04 64 views
3

我正在使用下面的查詢,我需要指定排序規則提示以避免跨數據庫的排序問題,因爲此查詢使用來自2個數據庫的表。Sql Server - 使用排序

消息468,級別16,狀態9,第12行無法解析 「Latin1_General_CS_AI」 和 的 「Latin1_General_CS_AS」 等於操作之間的排序規則衝突 。

目前我收到上述錯誤的歸類衝突,當我運行其中一些使用不同的數據庫,不同的排序規則的查詢:

Delete from table1 where oldcolumn in 
(
select newcolumn from Database2.dbo.table2 
where invoiceid = @invno 
and complete = 0 
) 

我改變了查詢,以包括如下歸類提示:

Delete from table1 where oldcolumn COLLATE SQL_Latin1_General_CP1_CS_AS in 
(
select newcolumn from Database2.dbo.table2 
where invoiceid = @invno 
and complete = 0 
) 
  1. 以上查詢是否解決了排序問題?
  2. 在操作符的左邊還是右邊指定整理提示(例如「=」運算符)是否一樣?
  3. 可以像invoiceid = @invno一樣查詢生成運行時排序conflit錯誤?

注:我問這個問題,因爲我不訪問任何上述2個數據庫和腳本將被實際的數據庫上運行。

+0

你忘了來形容「歸類的問題,」你現在經歷。你是否收到錯誤信息,錯誤的結果或什麼? – Quassnoi

+0

我收到排序衝突的運行時錯誤。我已更新問題。 –

+0

您忘記發佈錯誤消息。 – Quassnoi

回答

0

使用下面的查詢:

DELETE FROM Table1 
WHERE Table1.ID IN (
       SELECT Table1.ID 
       FROM Table1 
       INNER JOIN Database2.dbo.Table2 Table2 ON Table2.NewColumn = Table1.OldColumn COLLATE SQL_Latin1_General_CP1_CS_AS 
       WHERE Table2.invoiceid = @invno 
        AND Table2.complete = 0 
       )