如何在多个数据库中使用EXCEPT子句

时间:2015-04-28 14:59:22

标签: sql sql-server

我有一个带有except子句的查询。在except之下,我的第二个查询来自与第一个查询正在使用的数据库不同的数据库。

它看起来像这样

SELECT field1 as a
FROM table 1
EXCEPT
USE differentdb
SELECT field2 as a
FROM table 2

我也试过这个

SELECT field1 as a
FROM table 1
EXCEPT
USE differentdb
SELECT field2 as a
FROM differentdb.dbo.table2

我意识到SQL中不允许这样做,因为我收到以下错误:

  

消息468,级别16,状态9,行1无法解析排序规则   " SQL_Latin1_General_CP1_CI_AS"之间的冲突和   " Latin1_General_CI_AS"在等于操作。

我想知道是否有另一种方法可以编写此查询并完成跨db EXCEPT子句。

2 个答案:

答案 0 :(得分:3)

快速更改列的排序规则,如:

SELECT field1 COLLATE SQL_Latin1_General_CP1_CI_AS as a
FROM table 1
EXCEPT
SELECT differentdb.SchemaName.field2 as a
FROM table 2

答案 1 :(得分:1)

我们可以使用collate子句转换其他数据库中的排序规则。

SELECT field2 collate SQL_Latin1_General_CP1_CI_AS as a
FROM table 2

在这里你应该使用正确的整理 - 因为它不是第一和第二个数据库整理的信息。

或者你可以简单地使用

SELECT field2 collate database_default as a
FROM table 2

这将导致collate子句继承当前数据库的排序规则