mySQL-在确保字段唯一的同时抓取数据

mySQL-在确保字段唯一的同时抓取数据,mysql,Mysql,我有这两张桌子 带有“id、类别、总数”字段的类别 字段为“id、类别\ id、标题”的用户 类别是用户可以选择的类别列表。 每次用户选择某个类别时,我们都会增加总计数器。(即受欢迎程度) 如何根据categories.total以及user.id需要是最新的,获取每个类别的唯一用户数据 这就是我所拥有的。几乎没有了,只是它获取了第一个用户id select users.id from users left join categories on users.category_id = categ

我有这两张桌子

带有“id、类别、总数”字段的类别
字段为“id、类别\ id、标题”的用户

类别是用户可以选择的类别列表。
每次用户选择某个类别时,我们都会增加总计数器。(即受欢迎程度)

如何根据categories.total以及user.id需要是最新的,获取每个类别的唯一用户数据

这就是我所拥有的。几乎没有了,只是它获取了第一个用户id

select users.id from users left join categories on users.category_id = categories.id group by users.category_id order by categories.total desc
为了举例说明,这里有一个例子:
类别表具有以下值
id=1,类别=免费,总计=3
id=2,类别=昂贵,总计=1
id=3,类别=cute,总计=2

用户表具有以下值
id=1,类别\ id=1,标题=aello
id=2,类别_id=2,标题=bello
id=3,类别\ id=3,标题=zello
id=4,类别\ id=1,标题=gello
id=5,类别\ id=3,标题=大提琴
id=6,类别id=1,头衔=fello

我使用的sql查询返回以下用户:1、3、2(与总数最多的类别关联的第一个用户)

但是,我希望结果是:6、5、2(最后一个与总数最多的类别关联的用户)

谢谢,

你的要求把我搞糊涂了。。。所以我不确定这是否真的能实现你想要的。。。但它应该返回(6,5,2)(没有特定顺序)。如果订购很重要,请添加“按类别_id订购”或其他内容

SELECT MAX(id)
FROM users
GROUP BY category_id;

为了回应您的评论,请尝试以下方法(未经测试,因为我没有在任何地方安装MySQL):


你的要求把我弄糊涂了。。。所以我不确定这是否真的能实现你想要的。。。但它应该返回(6,5,2)(没有特定顺序)。如果订购很重要,请添加“按类别_id订购”或其他内容

SELECT MAX(id)
FROM users
GROUP BY category_id;

为了回应您的评论,请尝试以下方法(未经测试,因为我没有在任何地方安装MySQL):

。。。或者,如果你想让用户ID从最低的类别数量到最高的类别数量开始

select users.id from users left join categories on users.category_id = categories.id group by users.category_id order by categories.total asc
。。。或者,如果你想让用户ID从最低的类别数量到最高的类别数量开始

select users.id from users left join categories on users.category_id = categories.id group by users.category_id order by categories.total asc

这是超级接近。我只是稍微修改了一下这个问题。MAX(id)现在返回正确的id。然而,与用户关联的所有其他字段仍然是与“id”关联的字段,而不是与MAX(id)关联的字段,这是因为mysql的GROUP BY非常草率,不需要您按分组或使用聚合函数,而是在这些情况下选择(有效地)随机结果插入。。。你可以通过一个子选择来做你想做的事情…这是非常接近的。我只是稍微修改了一下这个问题。MAX(id)现在返回正确的id。然而,与用户关联的所有其他字段仍然是与“id”关联的字段,而不是与MAX(id)关联的字段,这是因为mysql的GROUP BY非常草率,不需要您按分组或使用聚合函数,而是在这些情况下选择(有效地)随机结果插入。。。您可以使用子选择来执行您想要的操作。。。