[英]How to select 5 distinct rows
如何为每个site_id
选择5行,1,这会引发错误
SELECT DISTINCT site_id, *
FROM deal
WHERE site_id IN (2, 3, 4, 5, 6)
ORDER BY id
DESC LIMIT 5
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'* FROM deal WHERE site_id IN(2,3,4,5,6)ORDER BY id DESC LIMIT 5'附近使用正确的语法“
尝试使用GROUP BY
SELECT *
FROM deal
WHERE site_id IN (2, 3, 4, 5, 6)
GROUP BY site_id
ORDER BY id DESC
LIMIT 5;
如果您的表允许重复的site_ids,并且您只需要为每个site_id显示一个,那么假设ID是唯一的
SELECT * FROM deal
WHERE id in (
SELECT max(id) maxid
FROM deal
WHERE site_id IN (2, 3, 4, 5, 6)
GROUP by site_id
)
首先为每个站点获取一个特定的交易ID(最大值)。 (内部查询。)然后获取每个交易ID的完整行。 (外部查询。)
SELECT * FROM deal
WHERE id in (
SELECT max(id) maxid
FROM deal
WHERE site_id IN (2, 3, 4, 5, 6)
GROUP_BY site_id
)
如果您真的有兴趣为数据库中的所有站点的每个站点获取一行,则可以删除以下行。
WHERE site_id IN (2, 3, 4, 5, 6)
您不能指定DISTINCT site_id并且还包括*通配符。 如果要指定distinct site_id,则需要删除通配符并指定要使用的其他字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.