如果关系计数大于 X,SQL 选择吗?

Ale*_*lex 1 mysql sql count

我有2张桌子

orders ”与“ articles ”有1对N的关系

SELECT `orders`.* FROM `orders` INNER JOIN `articles` ON 
`articles`.`orders_id` = `orders`.`id` where ????
Run Code Online (Sandbox Code Playgroud)

如何对文章进行子计数并仅获得包含 4 篇或更多文章的订单?

谢谢你的帮助!

Gor*_*off 5

您可以这样做:

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

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

另一种方法是:

select o.*
from orders o
where (select count(*)
       from articles a
       where a.order_id = o.id
      ) >= 4;
Run Code Online (Sandbox Code Playgroud)

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