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

标签 mysql

我有这两张表

带有字段“id、category、total”的类别
字段为“id、category_id、title”的用户

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

如何获取按类别排序的每个类别的唯一用户数据。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,类别 = 可爱,总数 = 2

users 表具有以下值
id = 1,category_id = 1,标题= aello
id=2,category_id=2,标题=bello
id = 3,category_id = 3,标题= zello
id = 4,category_id = 1,标题=杰洛
id = 5,category_id = 3,标题 = 大提琴
id = 6,category_id = 1,标题= friend

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

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

谢谢,
三通

最佳答案

你的要求让我感到困惑......所以我不确定这是否真的实现你想要的......但它应该返回 (6,5,2) (没有特定的顺序)。如果排序很重要,请添加“ORDER BY Category_id”或其他内容。

SELECT MAX(id)
FROM users
GROUP BY category_id;

要解决您的评论,请尝试以下操作(未经测试,因为我没有在任何地方安装 MySQL):

SELECT *
FROM users
WHERE id = (
    SELECT MAX(id)
    FROM users
    GROUP BY category_id
);

关于mySQL - 抓取数据同时确保字段是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379346/

相关文章:

mysql - 如何使用触发器在插入时更改同一表的字段值(MySQL)

Mysql 行值作为带有 count(*) 的列

mysql - 如何监控我的 MySQL 复制服务器?

php - 在带循环的准备好的语句后输出数据时出现问题

MYSQL,使用单个select语句在存储过程中设置两个变量

mysql - 3 个查询合并并计划创建图形

mysql - 如何检索存储在多行中的 "dynamic"属性作为正常记录?

mysql - 时间戳列的字段列表中的未知列

mysql - 合并所有两个表但列数不同

Mysql 变音符号/重音不敏感的搜索和存储