mysql select 2 row from each group by

冷暖自知 提交于 2019-12-04 13:40:38
SELECT p.id, g.typeid, g.id, g.title
FROM products p 
INNER JOIN (SELECT * FROM gallery a
            WHERE (SELECT COUNT(*) FROM gallery b WHERE b.title = a.title AND b.id >= a.id) <= 2
           ) g ON p.id = g.typeid 
WHERE p.id in (3,4,5)

EDIT:

Try this SQL Fiddle Demo

SELECT p.id, g.typeid, g.id, g.name
FROM products p 
INNER JOIN (SELECT * FROM gallery a
            WHERE (SELECT COUNT(*) FROM gallery b WHERE b.typeid = a.typeid AND b.id >= a.id) <= 2
           ) g ON p.id = g.typeid 
WHERE p.id in (3,4,5) order by g.id asc

So basically this part

WHERE (SELECT COUNT(*) FROM gallery b WHERE b.title = a.title AND b.id >= a.id) <= 2

is used to replace group by typeid

SELECT p.id,p.title, g.typeid, g.id, g.name
FROM products p 
INNER JOIN (SELECT * FROM gallery a
            WHERE (SELECT COUNT(*) FROM gallery b WHERE b.typeid = a.typeid AND b.id >= a.id) 

please try this

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!