Herramientas de usuario

Herramientas del sitio


informatica:bases_de_datos:mysql:snippets

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:bases_de_datos:mysql:snippets [2024/08/01 14:59] – [Fechas] tempwininformatica:bases_de_datos:mysql:snippets [2024/09/16 10:33] (actual) – [Búsqueda de valores duplicados] tempwin
Línea 20: Línea 20:
 </code> </code>
  
 +===== Agrupar =====
 +
 +==== Agrupar por un valor y concatenar los demás en una columna ====
 +
 +Por ejemplo, si tenemos:
 +
 +^ servicio_web  ^ email      ^
 +| 11111         | mail@mail.com   |
 +| 22222         | mail@mail.com   |
 +| 33333         | mail@mail.com   |
 +| 44444         | mail@mail.com   |
 +
 +Y queremos obtener el siguiente resultado:
 +
 +^ email         ^ servicio_web      ^
 +| mail@mail.com  | 11111, 22222, 33333, 44444  |
 +
 +Usaremos la función [[https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat|GROUP_CONCAT]]:
 +
 +<code mysql>
 +SELECT   
 +    email, 
 +    GROUP_CONCAT(servicio_web ORDER BY servicio_web ASC SEPARATOR ', '
 +FROM mitabla
 +GROUP BY email
 +</code>
 +
 +==== Búsqueda de valores duplicados ====
 +
 +Si queremos ver qué valores están duplicados en cierto campo, podemos hacer la siguiente consulta:
 +
 +<code mysql>
 +SELECT 
 +    campo1, 
 +    COUNT(*) c 
 +FROM mitabla 
 +GROUP BY campo1
 +HAVING c > 1
 +</code>
 +
 +Nos devolverá los valores de ''campo1'' que se repiten (de 1 a más veces)
 +
 +  * [[https://stackoverflow.com/questions/688549/finding-duplicate-values-in-mysql|Finding duplicate values in MySQL]] (Stack Overflow)
 ===== Fechas ===== ===== Fechas =====
  
Línea 257: Línea 300:
 UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', ''); UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', '');
 </code> </code>
 +
 +==== Concatenar campos que pueden ser NULL ====
 +
 +Si usamos la función ''CONCAT'' y algún campo puede tener valor NULL, la función devolverá NULL. Si este no es el comportamiento que queremos, debemos usar ''CONCAT_WS'' cuyo primer argumento es el separador:
 +
 +<code sql>
 +SELECT CONCAT_WS(" ", campo1, campo2, campo3_que_puede_tener_null, campo4)
 +FROM tabla
 +</code>
 +
 +<WRAP center round info 60%>
 +CONCAT_WS viene de //Concatenate With Separator//.
 +</WRAP>
 +
 +  * [[https://es.stackoverflow.com/questions/86721/usar-concat-o-concat-ws-en-mysql|¿Usar CONCAT o CONCAT_WS en MySQL?]]
 ===== Sistema ===== ===== Sistema =====
  
informatica/bases_de_datos/mysql/snippets.1722517197.txt.gz · Última modificación: por tempwin