繁体   English   中英

如何选择5个不同的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM