SQL检索最新记录,按唯一外键分组

标签 sql mysql database duplicates greatest-n-per-group

我正在创建查询以使用 SQL 数据库检索论坛中的最新帖子。

我有一个名为“Post”的表。每个帖子都有一个与“线程”和“用户”以及创建日期的外键关系。

诀窍是我不想显示同一用户的两篇帖子或同一话题中的两篇帖子。是否可以创建包含所有这些逻辑的查询?

# Grab the last 10 posts.
SELECT id, user_id, thread_id
FROM posts
ORDER BY created_at DESC
LIMIT 10;

# Grab the last 10 posts, max one post per user
SELECT id, user_id, thread_id
FROM post
GROUP BY user_id
ORDER BY date DESC
LIMIT 10;

# Grab the last 10 posts, max one post per user, max one post per thread???

最佳答案

试试这个,看看是否有帮助:

SELECT DISTINCT 
id, user_id, thread_id 
FROM posts 
ORDER BY created_at DESC LIMIT 10;

SELECT DISTINCT
id, user_id, thread_id
FROM post
GROUP BY user_id
ORDER BY date DESC
LIMIT 10;

您还可以看到 tutorial 关于这个和一个discussion对这个。

干杯! :)

关于SQL检索最新记录,按唯一外键分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756049/

相关文章:

进行多个连接时,tmp 表的 MySQL 不正确的 key 文件

php - 如何在循环中使用相同的变量

mysql - 记录 mysql 中一列或多列的更改

php - 使用 Codeigniter 更新数据库表中的字段状态

mysql - 更新域 (DB) 实体时添加列或创建新表?

SQL 主键异常

database - 具有多个 View 的单表还是多表?

objective-c - 5 种 Magical Record 设置方法有什么区别?

sql - 从行创建列

sql - pgplsql 存储过程的性能?