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

标签 sql sql-server

我有一个带有 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 中不允许这样做,因为我收到以下错误:

Msg 468, Level 16, State 9, Line 1 Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

我想知道是否有另一种方法来编写此查询并完成跨数据库 EXCEPT 子句。

最佳答案

动态更改列的排序规则,如下所示:

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

关于sql - 如何在多个数据库中使用 EXCEPT 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922832/

相关文章:

sql - 这个查询有什么问题?

mysql - 如何对 where 子句中的文本字段进行算术运算?

sql-server - SQL Server正则表达式约束

sql-server - 优化此查询。与 DBA 在社交网络/社区类型网站上的工作相关

sql-server - 创建与另一个表结构完全相同的表变量

c# - 修改machine.config后VS崩溃,组件也多

值大于值的 SQL COUNT 列

mysql - 在 select 语句中替换/赋值

mysql - 在更新 mysql 中的同一个表时跳过一些行

mysql - 与 SQL Server 相比,如何提高 mySQL 中大量更新的速度?