我有一张这样的桌子:

id | name | v (lvl)
11 | Jane | 6
12 | John | 5
13 | Jane | 6
14 | John | 5
15 | Jane | 7
16 | Jane | 5

在我的自动完成表单中,现在id想对名称进行分组,但得到最后一个值(id最大的值)。在上面的例子中
Jane | 5

我试着用不同的组合,分组,排序。但我总是
Jane | 6

或像这样分组并反转:
Jane | 6
Jane | 7
Jane | 5

我需要这样的东西:
SELECT name,lvl FROM
(
SELECT DISTINCT name, lvl FROM pora WHERE name LIKE 'Jane' ORDER BY lvl DESC
)
GROUP BY name

编辑:我不会得到最高级别,我要得到最高id的级别,按名称分组。就这些。我上面的例子是我想要得到的最好的解释。
在内部查询中,我将顺序更改为对所有项进行描述,在外部查询中,我将按名称对其进行分组。但我犯了个错误。
编辑2我终于自己做了。正确的解决方案(我已经接近了):
SELECT a.name, a.lvl FROM
(
SELECT DISTINCT name, lvl FROM pora WHERE name LIKE 'Jane' ORDER BY id DESC
)as a
GROUP BY name

最佳答案

LIKE没有%只是=

SELECT *
FROM yourTable
WHERE name = 'Jane'
ORDER BY id DESC
LIMIT 1

但是,由于您提到了自动完成功能,您应该使用:
WHERE name LIKE 'Jane%'

10-05 19:54