sql - 仅从同一用户中选择最多 3 行 - MySQL

标签 sql mysql

假设有两个表:

带列的“照片”表:

id,
title,
path,
user_id

还有包含列的“用户”表:

id
username

我想做的是从“照片”表中选择 30 张照片,但条件是在获取的结果集中最多有 3 张来自同一用户的照片。到目前为止,我有这个查询:

SELECT p.*, u.username FROM photos AS p 
INNER JOIN users AS u ON u.id = p.user_id 
ORDER BY p.id DESC LIMIT 30;

如何创建 WHERE 子句以实现最大值。获取的结果集中来自同一用户的 3 行?

编辑:我正在使用 MySQL 5.1.33

最佳答案

SELECT p.*, u.username 
FROM photos AS p 
INNER JOIN users AS u ON u.id = p.user_id 
WHERE p.id in (
 SELECT id  
 FROM photos p
 WHERE user_id  = p.user_id 
 LIMIT 3
)
ORDER BY p.id DESC LIMIT 30;

关于sql - 仅从同一用户中选择最多 3 行 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1509732/

相关文章:

尝试添加外键时mysql出错

mysql - 在mysql中将字符串与curdate连接起来

mysql - SQL - MAX 函数返回不正确的数据

mysql - MySQL 是否按照写入的顺序执行查询?

mysql - Spring JDBCTemplate NULL 检查

php - 确定表是否具有连续的主 ID 自动增量值

MySQL:选择每个类别和用户的结果以进行多项选择测试

mysql - #Sql比较一张表的数据和select查询结果的数据

mysql - 计数大多数捐赠者 SQL

sql - 获取一组最近的记录