问题如下:有orders(orders_id,date_purchased,customers_id )、orders_products(orders_id,products_id)两个表,现在需求是:查询某个用户最近10条订单的所有产品id。
首先联表查询中是不能使用limit的,所以考虑用子查询。
mysql中子查询如果有limit,会报错,不能执行
例如:
SELECT DISTINCT products_id FROM orders_products WHERE orders_id IN ( SELECT orders_id FROM orders WHERE customers_id = 1 ORDER BY date_purchased DESC LIMIT 10 );
报错:[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
这种情况要么使用程序控制,先把子查询结果查出来,再拼接到IN条件中执行查询
或者将SQL改成这样:
SELECT DISTINCT products_id FROM orders_products WHERE orders_id IN ( SELECT o.orders_id FROM ( SELECT orders_id FROM orders WHERE customers_id = 1 ORDER BY date_purchased DESC LIMIT 10 ) as o );
问题解决。
作者心情:昨夜西风凋碧树,独上高楼,望尽天涯路。
如无特殊说明,文章均为本站原创,转载请注明出处
- 转载请注明来源:Mysql子查询中使用limit
- 本文永久链接地址:http://icehill.cn/post/single/info/147.html