查询同表中origin_id为null记录的关联子项计数返回全0问题
问题解决:统计queue_items表中origin_id为null条目的关联记录数
你的SQL问题出在子查询没有区分主表和子表的别名,导致子查询里的queue_items.origin_id = queue_items.id是在子查询自身的行内做比较(也就是找origin_id等于自身id的记录),而不是关联主查询里的id。
修正后的子查询写法
SELECT q1.id, q1.source_url, q1.origin_id, (SELECT COUNT(*) FROM queue_items q2 WHERE q2.origin_id = q1.id) AS originCount FROM queue_items q1 WHERE q1.origin_id IS NULL
高效替代写法(适合大数据量)
如果表中数据较多,用LEFT JOIN+GROUP BY的方式性能更优:
SELECT q1.id, q1.source_url, q1.origin_id, COUNT(q2.id) AS originCount FROM queue_items q1 LEFT JOIN queue_items q2 ON q2.origin_id = q1.id WHERE q1.origin_id IS NULL GROUP BY q1.id, q1.source_url, q1.origin_id
两种写法都能正确统计每个origin_id为null的条目,被其他行作为origin_id的记录数量。
内容的提问来源于stack exchange,提问作者user5405648
相关产品推荐
相关产品推荐

