使用COLLATE选择不在其他表中的位置

时间:2020-08-06 18:48:24

标签: sql sql-server

我对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之间的排序规则冲突

2 个答案:

答案 0 :(得分:0)

通常一个整理值而不是整个查询。 自从我使用mssql以来已经不确定了一段时间,但是我认为这应该对您有用。 我整理两端,如果您在某个时间更改任何表的排序规则,可能是一个好主意,除非您有充分的理由,否则不要认为您真的不希望在同一模式中拥有两个不同的排序规则。 / p>

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

答案 1 :(得分:0)

在编写T2.2 2时,此处应为列名,语法为tableName.coloumnName,不确定这是否是您的意思。

相关问题