PostgreSQL查询:关联商品与卖家表并按商品数量排序
按商品数量排序展示卖家信息的PostgreSQL查询
嘿,这个需求很清晰,我来给你写对应的查询语句,顺便拆解下关键部分帮你理解:
SELECT s.sellers_id, s.sellers_name, COUNT(g.goods_id) AS goods_count FROM public.sellers s LEFT JOIN public.goods g ON s.sellers_id = g.goods_owner_id GROUP BY s.sellers_id, s.sellers_name ORDER BY goods_count DESC;
关键部分解释:
- LEFT JOIN:用左连接是为了覆盖所有卖家,哪怕某个卖家还没有上架任何商品(这种情况下
goods_count会显示为0)。如果只需要展示有商品的卖家,把LEFT JOIN换成INNER JOIN就行。 - COUNT(g.goods_id):因为
goods_id是非空字段,用它统计能精准得到每个卖家的商品数量,不会把空值计入统计。 - GROUP BY:按卖家的ID和名称分组,保证每个卖家只输出一行统计结果(由于
sellers_id是主键,其实只按s.sellers_id分组也可以,PostgreSQL会自动关联sellers_name)。 - ORDER BY goods_count DESC:按商品数量从多到少排序,让商品最多的卖家排在最顶部。如果要升序排列,把
DESC改成ASC即可。
内容的提问来源于stack exchange,提问作者Sergey Kozlov
相关产品推荐
相关产品推荐

