使用JOIN查询数据重复,怎么办?使用count统计怎么写SQL?

举例

比如现在有两个表tbl_a和tbl_b,如下:
tbl_a

id name
1 Bruce
2 Mike
3 Angela
tbl_b
id a_id
:-: :-:
1 1
2 1
3 2
4 3
5 3
6 3
这时候我们如果联查的话,就会出现重复数据:
select a.id, a.name from tbl_a a 
join tbl_b b on a.id = b.a_id
where

这样查出来的数据就会像下面这样:

id name
1 Bruce
1 Bruce
2 Mike
3 Angela
3 Angela
3 Angela

解决

去重的方法有三种:

一、distinct

select distinct a.id, a.name from tbl_a a 
join tbl_b b on a.id = b.a_id
where

二、group by

select a.id, a.name from tbl_a a 
join tbl_b b on a.id = b.a_id
wheregroup by a.id

三、子查询

select a.id, a.name from tbl_a a 
where a.id = (select a_id from tbl_b where a_id = a.id)

count怎么办?

如果要用count统计数据,直接按最开始的写法也会统计多出来,而且此时distinct和group by也不好用了。
distinct直接没效果,group by则变成了按tbl_a的id分别统计个数。
这时候就只能用子查询来解决问题了。

你可能感兴趣的:(MySQL,sql,mybatis,数据库)