假设有两个表:
带列的“照片”表:
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/