Ejemplo
Por ejemplo, hay dos tablas tbl_a y tbl_b, como sigue:
tbl_a
identificación | nombre |
---|---|
1 | bruce |
2 | Miguel |
3 | Ángela |
tbl_b | |
identificación | ayuda |
:-: | :-: |
1 | 1 |
2 | 1 |
3 | 2 |
4 | 3 |
5 | 3 |
6 | 3 |
Si hacemos una consulta conjunta en este momento nos aparecerán datos duplicados: |
select a.id, a.name from tbl_a a
join tbl_b b on a.id = b.a_id
where …
Los datos encontrados de esta manera se verán así:
identificación | nombre |
---|---|
1 | bruce |
1 | bruce |
2 | Miguel |
3 | Ángela |
3 | Ángela |
3 | Ángela |
resolver
Hay tres formas de eliminar duplicados:
1. distinto
select distinct a.id, a.name from tbl_a a
join tbl_b b on a.id = b.a_id
where …
2. agrupar por
select a.id, a.name from tbl_a a
join tbl_b b on a.id = b.a_id
where …
group by a.id
3. Subconsulta
select a.id, a.name from tbl_a a
where a.id = (select a_id from tbl_b where a_id = a.id)
¿Qué hacer con el conteo?
Si desea utilizar estadísticas de conteo, simplemente siga el método de escritura inicial y obtendrá demasiadas estadísticas, y distinguir y agrupar por no es fácil de usar en este momento.
Distinto no tiene ningún efecto directamente, pero agrupa por turnos para contar los números de acuerdo con la identificación de tbl_a.
En este momento, solo puede utilizar subconsultas para resolver el problema.