SQL select如果关系计数大于X?
问题描述:
我有2个表SQL select如果关系计数大于X?
“订单”与“文章” 1对N的关系
SELECT `orders`.* FROM `orders` INNER JOIN `articles` ON
`articles`.`orders_id` = `orders`.`id` where ????
我怎么能做出文章子计数并只获得与订单4篇或更多文章?
感谢您的帮助!在orders
SELECT o.*
FROM orders o INNER JOIN
articles a
ON a.orders_id = o.id
GROUP BY o.id
HAVING COUNT(*) >= 4;
这甚至与GROUP BY
合法使用SELECT *
,因为o.id
是(大概)主键:
答
你可以做到这一点的。
另一种方法是:
select o.*
from orders o
where (select count(*)
from articles a
where a.order_id = o.id
) >= 4;
这具有可articles(order_id)
使用索引的优势,因此它可以有更好的表现。通过使用HAVING
条款与聚合结果的过滤器
答
使用聚合
SELECT `o`.*
FROM `orders` o
INNER JOIN `articles` a
ON `a`.`orders_id` = `o`.`id`
GROUP BY o.id
HAVING COUNT(DISTINCT a.id) >=4
你试过group by和having? – sia
请提供您的表格数据和attr – Gagantous