mySQL-在确保字段唯一的同时抓取数据
我有这两张桌子 带有“id、类别、总数”字段的类别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、标题”的用户 类别是用户可以选择的类别列表。
每次用户选择某个类别时,我们都会增加总计数器。(即受欢迎程度) 如何根据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非常草率,不需要您按分组或使用聚合函数,而是在这些情况下选择(有效地)随机结果插入。。。您可以使用子选择来执行您想要的操作。。。