如何为每个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'附近使用正确的语法“
答案 0 :(得分:4)
尝试使用GROUP BY
SELECT *
FROM deal
WHERE site_id IN (2, 3, 4, 5, 6)
GROUP BY site_id
ORDER BY id DESC
LIMIT 5;
答案 1 :(得分:1)
如果您的表允许重复的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
)
答案 2 :(得分:1)
首先为每个站点获取一个特定的交易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)
答案 3 :(得分:0)
您无法指定DISTINCT site_id并且还包含*通配符。如果要指定distinct site_id,则需要删除通配符并指定要使用的其他字段。