SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num
FROM table
WHERE type=2
ORDER BY num DESC LIMIT 5
这会获取 !x! 之间的数字在一个字符串中并尝试返回数字并按该数字对行进行排序。它工作正常。
但是,我不知道如何返回唯一用户 ID。
添加 ORDER BY userid 返回不按 num 排序的行:
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
Distinct 也不起作用:
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!
结果应该是:
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;
关于mysql - 行未按 group by 正确排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9021440/