Hola stevens82:
Cita: necesito que de dos tablas eliminar ciertos registros
Siempre que hables de eliminar registros de una tabla, tendrás que trabajar con el comando DELETE. el primer paso es determinar qué registros son los que quieres eliminar. tal como lo tienes en tu ejemplo, la lógica sería:
Código:
ELIMINAR DE tabla_b AQUELLOS REGISTROS QUE NO EXISTAN EN LA tabla_a
dados tus datos:
Código MySQL:
Ver original+--------+--------+
| codigo | nombre |
+--------+--------+
| 1 | AAA |
| 1 | BBB |
| 1 | CCC |
| 2 | FFF |
| 3 | GGG |
| 3 | HHH |
+--------+--------+
+--------+--------+
| codigo | nombre |
+--------+--------+
| 1 | AAA |
| 1 | BBB |
| 1 | CCC |
| 1 | DDD |
| 2 | EEE |
| 2 | FFF |
| 3 | GGG |
| 3 | HHH |
+--------+--------+
tienes dos formas de obtener los registros que quieres eliminar:
CON LA CLÁUSULA NOT EXISTS:
Código MySQL:
Ver original -> tabla_b.codigo = tabla_a.codigo
-> AND tabla_b.nombre
= tabla_a.nombre
); +--------+--------+
| codigo | nombre |
+--------+--------+
| 1 | DDD |
| 2 | EEE |
+--------+--------+
CON UN LEFT JOIN:
Código MySQL:
Ver original -> tabla_b.*
-> ON tabla_a.codigo
= tabla_b.codigo
-> AND tabla_a.nombre
= tabla_b.nombre
+--------+--------+
| codigo | nombre |
+--------+--------+
| 1 | DDD |
| 2 | EEE |
+--------+--------+
Lo único que tienes que hacer es cambiar cualquiera de estos SELECT por un DELETE y listo.
Cita: como eliminos esos registros digamos con cierto boton que ejecute esa accion?
Esto más bien es una cuestión de programación. Si manejas algún lenguaje de programación entonces dependerá de ese lenguaje el cómo ejecutes el DELETE. Estrictamente hablando de MySQL, sólo tienes que ejecutar la sentencia desde una consola o si necesitas que esto se haga de manera programada entonces programas un JOB que la ejecute:
https://dev.mysql.com/doc/refman/5.7...-overview.html
Haz la prueba y nos comentas.
Saludos
Leo.