我有一个数据库,看起来像SQL语句MAX返回错误的列
Year Name TR AST
1 Player 1 10 3
2 Player 1 23 "-"
3 Player 1 35 5
1 Player 2 32 1
2 Player 2 29 "-"
3 Player 2 50 2
1 Player 3 74 3
2 Player 3 23 1
3 Player 3 93 9
我试图返回球员名称和MAX TR量。所以在这种情况下,玩家3将拥有93 TR。
我使用这个SQL查询SQLITE
SELECT MAX(TR), name
FROM database
WHERE TR != "-"
它返回正确的MAX(TR)内,但它给了错误的玩家名称。
93 Player 1
我运行了其他查询,如MAX(AST),它也给出了错误的播放器名称。无论我使用哪个MAX查询,哪个问题出在哪里,都会返回相同的玩家名称。
我也试过这种试图按照SQL的执行顺序从这里http://www.bennadel.com/blog/70-sql-query-order-of-operations.htm
FROM database
WHERE TR != "-"
SELECT MAX(TR), name
除了
SELECT name, MAX(TR)
FROM database
GROUP BY name
LIMIT 1
,并返回错误的TR但正确的对应名称为那TR。
如果它是一个问题,我不得不使用
WHERE TR != "_"
否则它会返回一个球员的名字和TR“ - ”。我不确定这是为什么。
查询语句的顺序有问题吗?
我真的很惊讶,查询在所有工作。通常,如果您一起使用列和聚合函数,则需要使用group by。 – pscuderi