SQL MAX语句返回错误的列

SQL MAX语句返回错误的列,sql,sqlite,Sql,Sqlite,我有一个DB看起来像 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

我有一个DB看起来像

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
我试图返回球员姓名和最大TR的金额。因此,在这种情况下,它将是球员3和93 TR

我在SQLITE中使用这个SQL查询

SELECT MAX(TR), name
FROM database
WHERE TR != "-"
它返回正确的最大值(TR),但给出了错误的玩家名称

 93 Player 1
我运行过其他查询,比如MAX(AST),它也给出了错误的玩家名称。无论我使用哪个MAX查询(问题所在),都会返回相同的玩家名称

我也尝试过从这里开始遵循SQL执行的顺序

以及

SELECT name, MAX(TR)
FROM database
GROUP BY name
LIMIT 1
它返回了错误的TR,但是该TR的对应名称正确

万一这是我不得不使用的问题

WHERE TR != "_" 
否则它将返回一个玩家名和TR“-”。我也不太清楚为什么会这样


我的查询语句的顺序有问题吗?

我会使用子查询,可能是这样的:

SELECT
    name,
    TR
FROM
    database
WHERE
    TR IN (
        SELECT
            MAX(TR)
        FROM
            database
        WHERE
            TR != "-"
    )

请注意,当有多个玩家使用相同的TR时,这会给您多个结果,这也是最大TR。

最大值是SQL中的聚合函数。不能在SELECT语句中使用聚合函数和非聚合元素,例如在本例中使用的列

与其这样做,不如尝试以下解决方案:

SELECT name, TR 
FROM database
WHERE TR = (
   SELECT MAX(TR)
   FROM database
   WHERE TR != "-"
)

获取所需内容的最简单方法是使用
order by
limit

SELECT name, TR
FROM database
WHERE TR <> '-'
ORDER BY TR DESC
LIMIT 1;
选择名称,TR
从数据库
其中TR'-'
按TR DESC订购
限值1;

你甚至不需要
max()

我真的很惊讶这个查询居然能工作。通常,如果同时使用列和聚合函数,则需要一个group by。谢谢。我删除了前面的评论,因为我明白了为什么Max()在这里不起作用。
SELECT name, TR
FROM database
WHERE TR <> '-'
ORDER BY TR DESC
LIMIT 1;