在MySQL中限制子查询

时间:2014-03-03 10:51:14

标签: mysql sql

我需要在MySQL中进行SQL查询,查询应该从两个表中选择store和item,store有一个或多个item,查询应该从这两个表中选择按创建日期排序的商店表和更新日期来自项目表,每个商店的最大项目数为10,如果商店的项目数​​超过10个,则每个商店不超过10个项目,我考虑做这个查询:

select * 
from store s, item i
where s.store_id = i.store_id
  and i.item_id in (select i1.item_id 
                    from item i1 
                    where i1.store_id = s.store_id  
                    limit 10)
group by s.store_id, i.item_id
order by s.created_at, i.updated_at

但我收到了错误

  

此版本的MySQL尚不支持子查询中的限制

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可能需要升级MySQL版本。

如果不确定这是否有用,但值得尝试一下

select s.*,i.* 
from store s
JOIN item i on s.store_id=i.store_id
JOIN (select i1.item_id from item i1 where i1.store_id = s.store_id limit 10) 
     itemids ON i.item_id=itemids.item_id
group by s.store_id, i.item_id
order by s.created_at, i.updated_at

我在subselect上进行连接,然后在i.item_id上加入它们