以下sql查询为什么会出现重复结果 select a.* from (select count(order_id),DEAL_PROV_NAME from ee_order_sub_sheet where SUB_SHEET_ID in(3090, 3163, 3173, 3174, 3191, 3228, 3215) GROUP BY DEAL_PROV_NAME) a left join (select count(order_id),DEAL_PROV_NAME from ee_order_sub_sheet where SUB_SHEET_ID in(3090, 3163, 3173, 3174, 3191, 3228, 3215) GROUP BY DEAL_PROV_NAME) b on a.DEAL_PROV_NAME = b.DEAL_PROV_NAME left join (select count(order_id),DEAL_PROV_NAME from ee_order_sub_sheet where SUB_SHEET_ID in(3090, 3163, 3173, 3174, 3191, 3228, 3215) GROUP BY DEAL_PROV_NAME) c on a.DEAL_PROV_NAME = c.DEAL_PROV_NAME;
时间: 2024-04-21 11:27:40 浏览: 68
sql查询表中某字段下所有重复的记录
5星 · 资源好评率100%
这个 SQL 查询会出现重复结果是因为它使用了三个相同的子查询,这些子查询会重复计算相同的数据,从而导致结果集中出现重复的数据。
具体来说,在主查询中,表 a 包含了所有的 DEAL_PROV_NAME,而表 b 和表 c 则分别与表 a 进行了左连接。如果某个 DEAL_PROV_NAME 在表 a 中出现了多次,那么在左连接时,它也会出现多次,从而导致结果集中出现重复的数据。
要解决这个问题,可以将子查询计算的结果存储在临时表中,然后在主查询中引用这些临时表,这样就可以避免重复计算相同的数据,从而避免结果集中出现重复的数据。
阅读全文