我在MySql中有一个名为order_item
的表,其中包含了一个特定订单的详细信息,该订单包含以下字段(以及一些其他可能不需要在这里发布的字段)。
订单号
生产id
订购数量
价格
我需要计算出最畅销的产品。我正在使用下面的SQL语句。
SELECT o.prod_id, sum(o.qty_ordered) as qty_ordered, p.prod_img
FROM order_item o, product_image p
WHERE o.prod_id=p.prod_id AND
p.prod_id IN(SELECT prod_id FROM product_image limit 1) AND
order_id IN(SELECT order_id FROM order_table WHERE od_status='Completed')
GROUP BY prod_id
HAVING SUM(qty_ordered)>=5
ORDER BY prod_id DESC
上面的查询计算出最畅销的产品。唯一的问题是上面语句中提到的子查询
p.prod_id IN(SELECT prod_id FROM product_image limit 1)
不起作用。MySQL抱怨
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
此子查询检索
product_image
表中维护的产品图像,其中同一产品有多个产品图像,我只需要其中一个图像来显示。我的服务器版本是5.1.48。有没有别的办法可以避开这种情况?
最佳答案
查看您的查询是否需要带有IN子句的行?
您已经加入了:
WHERE o.prod_id=p.prod_id
你说的这句话似乎是多余的,因为连接已经发生了?此外,LIMIT查询中没有WHERE子句。这个表只有一行吗?
关于mysql - 在MySql中使用LIMIT子句不适用于子查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10440129/