我有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/