我正在运行命令SELECT distinct winner FROM history WHERE NOT EXISTS (SELECT * FROM players WHERE players.name = history.winner)
如果history.winner类似于"Test“(注意尾随空格),并且players.name已经有了"Test”,那么它似乎失败了。
我在不区分大小写时也遇到了同样的问题,所以我将两个字段排序都设为latin1_general_cs,如果这有什么作用的话。我认为解决方案可能导致使用BINARY关键字,而不是
SELECT distinct BINARY winner FROM history WHERE NOT EXISTS (SELECT * FROM players WHERE BINARY players.name = history.winner)使查询变得非常非常慢(慢到我在1分钟后就退出了)。
发布于 2014-06-06 03:39:36
您可以使用函数来完成此操作:
SELECT DISTINCT h.winner
FROM history h
WHERE NOT EXISTS
(
SELECT *
FROM players p
WHERE Trim(p.name) = Trim(h.winner)
)发布于 2014-06-06 03:40:15
mysql TRIM()函数将去掉特定字段中的前导空格和尾随空格。
SELECT distinct winner FROM history WHERE NOT EXISTS (SELECT * FROM players WHERE players.name = TRIM(history.winner))如果您只想修剪尾随空格,则可以改用RTRIM()。
https://stackoverflow.com/questions/24068782
复制相似问题