SQL中的MAX函数返回的不是MAX值

SQL中的MAX函数返回的不是MAX值,sql,duplicates,max,Sql,Duplicates,Max,我已经运行了数千次MAX()数据拉取,出于某种原因,这个查询返回了几行,而不是基于MAX函数中列的MAX值返回的一行 例如,我的数据看起来像: Max(x) | date | level_1 4 | 2018-01-07 | fer 7 | 2018-01-07 | fer 当它看起来像: Max(x) | date | level_1 7 | 2018-01-07 | fer 下面是为简单起见而编辑的

我已经运行了数千次MAX()数据拉取,出于某种原因,这个查询返回了几行,而不是基于MAX函数中列的MAX值返回的一行

例如,我的数据看起来像:

Max(x) |  date       |  level_1   
4      |  2018-01-07 |  fer 
7      |  2018-01-07 |  fer
当它看起来像:

Max(x) |  date       |  level_1   
  7    |  2018-01-07 |  fer 
下面是为简单起见而编辑的查询。我错过什么了吗?如果不太可能,可能行之间的数据格式不同

SELECT 
    MAX(X) as max_x,
    date,
    level_1,
FROM
    table 
WHERE 
    date = '2018-01-07'
    and level_1 ='abc'
GROUP BY date,
    level_1

根据示例结果,您的数据中存在问题。我想到两件事:

  • A
    B
    列的值看起来相同,但不同(更可能的问题)
  • 您在
    分组依据
    中有其他键,这些键不在
    选择
    中(考虑到结果和查询之间的差异,可能存在)
最可能的原因是前导空格或尾随空格。您可以使用数据库中相应的
TRIM()
REPLACE()
函数删除它们


另外两个可能的原因是隐藏字符或看起来相似但不同的字符(例如1和小写L或0和大写o)。

示例结果和查询不同。这使得其他人很难理解你的疑问和正在发生的事情。