数据库连接查询时一对多导致数据超出左表数量
select * from 表1,表2 where 表1.关联字段=表2.关联字段 and 表2.主键 in(select min(主键) from 表2 group by 关联)
实际操作四季项目时
SELECT
u.`name`,
u.phone,
p.biz,
y.district,
count( z.user_id ) AS num
FROM
zh_gh_activity_ql_copy2 z,
zh_gh_user u,
zh_gh_activity_ql_user p,
zh_gh_activity_ql_shop_copy2 y
WHERE
z.user_id = u.id
AND u.phone = p.phone
AND y.id = z.shop_id
AND p.id IN ( SELECT min( id ) FROM zh_gh_activity_ql_user GROUP BY phone )
AND z.is_get = '1'
GROUP BY
z.user_id
ORDER BY
num DESC
本文探讨了一种在SQL查询中遇到的一对多关联导致数据超出左表数量的问题。通过调整查询语句,使用子查询获取每个电话号码的最小主键,确保了查询结果与左表数量一致。在实际操作中,针对用户、活动参与记录、商家等表进行联查时,通过筛选并按数量降序排序,展示了如何有效地进行数据聚合和过滤。
1449





