在执行如下所示的sql查询时出现排序规则问题:
INSERT INTO (table1) (...)
SELECT (...)
FROM (table 2)
WHERE X NOT IN (SELECT Y from (table1)
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AS" in the equal to operation.
我看到了一个解决方案here,但是当我尝试这样的操作时:
INSERT INTO (table1) (...)
SELECT (...)
FROM (table 2)
WHERE X NOT IN (SELECT Y from (table1) COLLATE database_default
我收到语法错误:
"Incorrect syntax near the keyword 'COLLATE'."
有人知道我在做什么错吗?
答案 0 :(得分:1)
您应该移动COLLATE
:
INSERT INTO (table1) (...)
SELECT (...)
FROM (table 2)
WHERE X NOT IN (SELECT Y COLLATE database_default from table1);
请注意,如果NOT IN
列可为空,则Y
可能会很棘手。通过添加以下代码来保护代码是一种很好的做法:
WHERE X NOT IN(SELECT Y COLLATE database_default from table1 WHERE Y IS NOT NULL);