Mysql子查询中使用limit

问题如下:有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
	);

问题解决。

文章已完
作者心情:昨夜西风凋碧树,独上高楼,望尽天涯路。
如无特殊说明,文章均为本站原创,转载请注明出处