Encontrar filas repetidas en Mysql

Mysql es una base de datos relacional, por lo que en general usamos relaciones (Dah !) que tienen que ser únicas a través de llaves primarias y foráneas. A veces nos pasan información que incluir en una tabla de manera directa que no necesariamente viene bien filtrada.

Cómo uno de nuestros fuertes en la empresa son los regalos corporativos, y dentro de ellos están los regalos de fin de año, muchas veces dependemos que las empresas con las cuales trabajamos nos manden la lista de empleados. En general esta información es entregada en un Excel o un CSV que puede tener datos repetidos que debemos filtrar.

Antiguamente para este objeto de encontrar filas repetidas realizaba un join de la tabla consigo misma, pero descubrí un método mucho más sencillo y menos tedioso.

SELECT * FROM `Empleados` group by `RUT` having count(*) >= 2 

De esta manera también podemos eliminar de la lista automáticamente los que estén repetidos.

Como no podemos actualizar una tabla en base a la misma, creamos una tabla temporal con estos datos.

CREATE TABLE temporal AS
SELECT `RUT` FROM `Empleados` group by `RUT` having count(*) >= 2

Ahora simplemente eliminamos los datos repetidos que aparecen en nuestra nueva tabla.

DELETE FROM `Empleados` 
WHERE `RUT` in (
    SELECT `RUT` from temporal
)
limit 1

Si bien el código anterior simplemente borra un solo registro, se entiende la idea. Ojo, si ejecutas nuevamente la sentencia existe la posibilidad que borres nuevamente el mismo registro que ya no estará repetido.

MysqlPasswordReset – Cambiar la clave root de Mysql

Acabo de crear un servidor WordPress con on click deployment de Google y tuve el problema que la clave que me dieron de mysql para root no correspondía a la real.

El error que obtenía era el siguiente :

ERROR 1045: Access denied for user: 'root@localhost' (Using 
password: YES)

Estos son simples pasos para cambiar la clave root de Mysql bajo un servidor linux si es que posees el error anteriormente mencionado.

¿ Que es lo que haremos ? :

  1. Detendremos el Servidor MySql.
  2. Lo iniciaremos sin que cargue los privilegios de los usuarios.
  3. Cambiamos la clave

Si tienes algún error un poco más complejo, o tu error corresponde a que necesitas agregar permisos para acceder fuera de localhost te recomiendo que veas el artículo que aparece al final.

Detenemos el servidor MySql

sudo /etc/init.d/mysql stop

Iniciamos el Servidor MySql sin los privilegios de usuarios. En este caso además por seguridad se impide las conexiones por red.

sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Ingresamos al servidor con el usuario root.

 mysql -u root

Con el siguiente comando seremos capaces de cambiar cualquier clave.

FLUSH PRIVILEGES;

Cambiamos la clave para el usuario root. Por si no lo habías notado puedes cambiar «password» por la clave que quieras… sin las comillas!

SET PASSWORD FOR root@'localhost' = PASSWORD('password');

Una vez que recibimos el mensaje de éxito, nuevamente limpiamos los privilegios.

FLUSH PRIVILEGES;

Detenemos el servidor MySql y lo iniciamos de manera normal nuevamente

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

En este punto ya deberíamos ser capaces de ingresar a neustro servidor mysql sin problemas.

Origen: MysqlPasswordReset – Community Help Wiki

Obtener los email de los comentarios de un post en wordpress

A veces es necesario obtener los email de la gente que ha comentado en un post para mandarle alguna información que podría ser importante. Si bien no existe una forma directa de hacerlo, mysql viene a salvarnos el día. SELECT comment_author_email FROM gr_comments WHERE comment_post_ID = 825 GROUP BY comment_author_email; En mi caso gr_comments corresponde … Leer más

Eliminar el guion del rut en mysql ( remplazar texto en mysql )

La verdad es que existen muchas maneras en que podemos reemplazar texto dentro de una BdD, muchas de ellas desde un lenguaje de programación modificando los datos, pero en realidad hacerlo de manera directa es muy sencillo, y muy rápido. Mysql tiene un comando llamada REPLACE que remplaza el texto o patron seleccionado con otro. … Leer más