Registros repetidos con 3 capos iguales

Antes que nada,
y ahora a preguntar mi caso es que quiero sacar registros repetidos eso lo se hace hacer, pero se me complica porque no solo necesito mostrar los registros repetidos, también debo visualizar aquellos en los que ciertos campos son iguales,
campo1| campo2| campo3 |campo4| campo5|
Yo hago esto
SELECT DISTINCT CAMPO1,CAMPO2,CAMPO3 FROM TABLA WHERE 
campo1 in (select a.campo1 from tabla as a group by a.campo1 having count(*) > 1 )
Order by campo1
Pero me necesito también en los que CAMPO1 repetido y CAMPO2 y CAMPO3 también son iguales en el mismo registro repetido.

1 respuesta

Respuesta
1
Para confirmar que he entendido tu pregunta, en una tabla del estilo...
+--------+--------+--------+--------+--------+
| campo1 | campo2 | campo3 | campo4 | campo5 |
+--------+--------+--------+--------+--------+
| abc    | def    | 123    | 0      | 0      |
| abc    | ghi    | 111    | 2      | 3      |
| abc    | ghi    | 111    | 4      | 3      |
| def    | ghi    | 111    | 4      | 3      |
+--------+--------+--------+--------+--------+
Te interesa ve los registros repetidos considerando los campos 1, 2 y 3. . En ese la consulta es un poco más simple que como la planteas. Simplemente lo que tienes que hacer es agrupar por esos tres campos y comprobar que hay más de un registro. En mi ejemplo:
    select campo1, campo2, campo3
       from TABLA
group by campo1, campo2, campo3
having count(*)>1
Te permite obtener  el caso que se repite en la columna 2 y 3:
+--------+--------+--------+
| campo1 | campo2 | campo3 |
+--------+--------+--------+
| abc    | ghi    | 111    |
+--------+--------+--------+
Como te decía no me he quedado del todo claro la pregunta. Releyéndola me parece que también podría preguntar el sacar los registros duplicados y con el mismo valor en los tres campos. Por ejemplo
..
+--------+--------+--------+--------+--------+
| campo1 | campo2 | campo3 | campo4 | campo5 |
+--------+--------+--------+--------+--------+
| abc    | def    | 123    | 0      | 0      |
| abc    | ghi    | 111    | 2      | 3      |
| abc    | ghi    | 111    | 4      | 3      |
| def    | ghi    | 111    | 4      | 3      |
| abc    | abc    | abc    | 2      | 3      |
| abc    | abc    | abc    | 3      | 4      |
+--------+--------+--------+--------+--------+
La idea sería parecida:
select campo1, campo2, campo3
 from TABLA  
where campo1=campo2 and campo1=campo3 
group by campo1, campo2, campo3 
having count(*)>1;
+--------+--------+--------+
| campo1 | campo2 | campo3 |
+--------+--------+--------+
| abc    | abc    | abc    |
+--------+--------+--------+
Saludos,
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 14px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<!--
<!
BODY, DIV, TABLE, THEAD, TBODY, TFOOT, TR, TH, TD, P { font-family:"Liberation Sans"; font-size:x-small }
-->
-->
<table border="0" cellspacing="0" frame="VOID" rules="NONE">
<colgroup><col width="60"></col></colgroup>
<tbody>
<tr>
<td width="60" height="17" align="LEFT">select campo1, campo2, campo3</td>
</tr>
<tr>
<td height="17" align="LEFT"> from TABLA </td>
</tr>
<tr>
<td height="17" align="LEFT">where campo1=campo2 and campo1=campo3 </td>
</tr>
<tr>
<td height="17" align="LEFT">group by campo1, campo2, campo3 </td>
</tr>
<tr>
<td height="17" align="LEFT">having count(*)>1;</td>
</tr>
</tbody>
</table>
</div>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas