SQL统计指定条件记录时Inner Join语法报错排查求助
你代码里的问题一共3处:
- 第二个INNER JOIN的关联语法完全写错
你原来的写法是INNER JOIN table_c c b.customer_id ON = c.name_id,一是ON关键字的位置放错了,二是关联字段用错了:根据你的描述table_b和table_c是通过name_id关联,不是用customer_id关联,正确的写法应该是INNER JOIN table_c c ON b.name_id = c.name_id - 日期筛选逻辑完全不符合需求,且写法不规范
你需要的是创建日期早于2021年1月1日,但现有的a.created_date::text like '2021-01-01%'只会筛选出2021年1月1日当天的记录,同时把日期转文本再用模糊匹配的方式性能极低,也容易因为日期格式问题出错,直接用日期比较即可:a.created_date < '2021-01-01' - 多余的GROUP BY子句
你要统计的是符合条件的总记录数,只会返回1行计数结果,不需要加group by count,这个子句完全多余,还会导致结果异常。
修正后的SQL如下:
SELECT count(*) as count FROM table_a a INNER JOIN table_b b ON a.customer_ID = b.customer_id INNER JOIN table_c c ON b.name_id = c.name_id WHERE c.first_name like 'B%' AND a.created_date < '2021-01-01'
内容的提问来源于stack exchange,提问作者llshelly7
相关产品推荐
相关产品推荐

