首页 > 解决方案 > SELECT where not in other table with COLLATE

问题描述

我对 SQL Server 语句有疑问。

我有 2 张桌子

T1

1
2

T2

1
2

我想从 T1 中选择 T1.2 不在 T2.2 中。我试过这个语句,但它不起作用,我收到一个错误

关键字 Collat​​e 附近的语法不正确

SELECT * 
FROM T1 
WHERE T1.2 NOT IN (SELECT T2.2 FROM T2) COLLATE sql_latin1_general_cp1_ci_as

PS:我使用collate了,因为没有它我得到了另一个错误

无法解决arabic_ci_as和sql_latin1_general_cp1_ci_as之间的排序规则冲突

标签: sqlsql-server

解决方案


通常一个整理值不是整个查询。不确定,因为我使用 mssql 已经有一段时间了,但我认为这应该适合你。我整理了两端,如果您在某个时候更改任何表的排序规则,这可能是一个好主意,除非有充分的理由,否则不要认为您真的希望在同一架构中有两个不同的排序规则。

SELECT * from T1 where T1.2 COLLATE DATABASE_DEFAULT not in 
(select T2.2 COLLATE DATABASE_DEFAULT from T2)

推荐阅读