举例
比如现在有两个表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 |
解决
去重的方法有三种:文章来源:https://www.toymoban.com/news/detail-601813.html
一、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
where …
group 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分别统计个数。
这时候就只能用子查询来解决问题了。文章来源地址https://www.toymoban.com/news/detail-601813.html
到了这里,关于使用JOIN查询数据重复,怎么办?使用count统计怎么写SQL?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!