在MySql中使用LIMIT子句不适用于子查询

我在MySql中有一个名为order_item的表,其中包含特定订单的详细信息,其中包含以下字段(以及其他我可能认为不必在此处发布的信息)。在MySql中使用LIMIT子句不适用于子查询

  1. ORDER_ID
  2. PROD_ID
  3. qty_ordered
  4. 价格

我需要计算最畅销的产品。我正在使用下面的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。是否有另一种方法来解决这种情况?

回答:

你是对的,MySQL不支持在IN子查询中的限制。

但是,您可以做的是制作一个视图,然后选择该视图。

将此变成一个观点:选择PROD_ID FROM product_image限1

然后调用它的IN子句中:

p.prod_id IN(SELECT prod_id FROM YOUR_VIEW_NAME_HERE) 

我不知道这是否是最好的答案,但它作品:)

回答:

看着你的查询是甚至需要IN子句的行? 您已经做了联同:

WHERE o.prod_id=p.prod_id 

好像你是在谈论该行是多余的,因为联接已经发生了?此外,LIMIT查询中没有WHERE子句。这张桌子里只有一排吗?

以上是 在MySql中使用LIMIT子句不适用于子查询 的全部内容, 来源链接: utcz.com/qa/265594.html

回到顶部