我有2张桌子

“订单”与“商品”具有1对N的关系

SELECT `orders`.* FROM `orders` INNER JOIN `articles` ON
`articles`.`orders_id` = `orders`.`id` where ????


我该如何对商品进行子计数,并且仅获得4件或更多商品的订单?

谢谢您的帮助!

最佳答案

您可以这样做:

SELECT o.*
FROM orders o INNER JOIN
     articles a
     ON a.orders_id = o.id
GROUP BY o.id
HAVING COUNT(*) >= 4;


这甚至是SELECT *GROUP BY的合法使用,因为o.id(大概)是orders上的主键。

另一种方法是:

select o.*
from orders o
where (select count(*)
       from articles a
       where a.order_id = o.id
      ) >= 4;


这样做的好处是可以使用articles(order_id)上的索引,因此可以具有更好的性能。

关于mysql - SQL选择关系数是否大于X?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46756395/

10-13 00:49