mysql - WHERE NOT EXISTS 不适用于尾随空格

标签 mysql sql subquery

我正在运行命令从不存在的历史记录中选择不同的获胜者(从玩家中选择* WHERE玩家.name =历史.获胜者)

如果history.winner类似于“Test”(注意尾随空格)并且players.name已经有“Test”,那么它似乎会失败

我在不区分大小写方面遇到了同样的问题,因此我将两个字段排序规则设置为 latin1_general_cs(如果这起作用的话)。我认为解决方案可能会导致使用 BINARY 关键字,但这样做

从不存在的历史记录中选择不同的 BINARY 获胜者 (SELECT * FROM Players WHERE BINARYplayers.name = History.winner) 使查询非常非常慢(太慢了,我在 1 分钟后退出) .

最佳答案

您可以使用Trim()函数来完成这个:

SELECT DISTINCT h.winner 
FROM history h
WHERE NOT EXISTS 
(
  SELECT * 
  FROM players p  
  WHERE Trim(p.name) = Trim(h.winner)
)

关于mysql - WHERE NOT EXISTS 不适用于尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068782/

相关文章:

php - 为什么我的 php/mysql 搜索字符串只匹配最后一个关键字?

mysql - 明显没有显示所需的输出

mysql - 为什么我的 rand() 代码在 mysql 中不起作用?

mysql - mysql 占零的百分比

mysql - PHP/MySQL - 计算数据库中有多少表包含特定名称

javascript - jQuery AJAX 检查数据库中是否存在电子邮件由于某种原因无法工作

python - 使用 Python 将文本文件写入 SQL

Mysql子选择排名

mysql - 如何简化多个子查询和GROUP_CONCAT?

sql - 在 Postgres 聚合中过滤