Mysql 未使用group by对行进行正确排序

Mysql 未使用group by对行进行正确排序,mysql,Mysql,这将拾取之间的数字!x!并尝试返回数字并按该数字对行进行排序。它很好用 但是,我不知道如何返回唯一的用户ID。 添加ORDER BY userid将返回不按num排序的行: SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num FROM table WHERE type=2 ORDER BY num DESC LIMIT 5 Distinct也不起作用: SELECT userid

这将拾取之间的数字!x!并尝试返回数字并按该数字对行进行排序。它很好用

但是,我不知道如何返回唯一的用户ID。

添加ORDER BY userid将返回不按num排序的行:

SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num 
FROM table
WHERE type=2
ORDER BY num DESC LIMIT 5
Distinct也不起作用:

SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num 
FROM table
WHERE type=2
GROUP BY userid
ORDER BY num DESC LIMIT 5
我没有主意了

例如:

SELECT DISTINCT(userid),SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num 
FROM table
WHERE type=2
ORDER BY num DESC LIMIT 5
结果应该是:

id    userid     data
1       56       !100!
2       22       !90!
3       56       !200!

每个用户ID是否有多个可能的结果?如果是这样,
DISTINCT
将无法满足您的需要。您选择为每个userid返回多条记录中的哪一条的标准是什么?有多行具有相同的userid,但不应返回两次userid。应返回具有最高num的唯一用户标识。@Michael在我的主要帖子中添加了示例。
userid      num
56          200
22          90
SELECT userid,MAX(num) num FROM
(SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num  
FROM table 
WHERE type=2) A
GROUP BY userid;