我已经研究了很长一段时间的答案,我在一个页面上找到了一个非常好的解决方案,但是我工作不顺利,我想知道为什么?该网址为:http://www.sqlines.com/mysql/how-to/get_top_n_each_group
我按照方法,这是我的代码:
SELECT id,
type,
IF (@type = type, @type_rank + 1, 1) AS type_rank,
@type := type
FROM imagesforctool
LIMIT 10
结果是:
id type type_rank @type := type
192499 Men 1 Men
192500 Men 1 Men
192504 Men 1 Men
192508 Men 1 Men
192514 Men 1 Men
192515 Men 1 Men
192516 Men 1 Men
192518 Men 1 Men
192519 Men 1 Men
192520 Men 1 Men
type_rank
列不加。
有什么问题?
答案 0 :(得分:0)
SELECT id,
type,
@type_rank:=IF (@type = type, @type_rank + 1, 1),
@type := type
FROM imagesforctool ORDER BY type
LIMIT 10
这是正确的查询。
您需要指定@type_rank
答案 1 :(得分:0)
尝试此查询
SELECT
id,
type,
@type_rank := IF(@current_type = type, @type_rank + 1, 1) AS type_rank,
@current_type := type
FROM
imagesforctool
ORDER BY
type
LIMIT
10