MySQL - Insertar registros en una tabla que no están en otra

 
Vista:
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 25/01/2018 12:30:09
Hola a todos

Como escribir la sentencia mysql y php para el insert into ... select
que inserte los registros en basedatodestino.tabla1 que estén en basedatoorigen.tabla1 y no en basedatodestino.tabla1

Es decir, tengo dos bases de datos, una tabla en cada una de ellas que se deben sincronizarse parcialmente
insertando aquellos registros que aparezcan en una tabla y no en la otra para que las dos tengan los mismos registros.

necesito hacer la query desde una pagina php que al ejecutarla realice estos cambios en las bases de datos
necesito sabes cómo hacer para conectar las dos bases de datos y hacer la query
mis conocimientos de programación son muy escasos.
Gracias de antemano por la ayuda
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por Leonardo Josué (414 intervenciones) el 25/01/2018 16:20:24
Hola Yaney:

Hablar de cuestiones de programación, sea con PHP o con cualquier otro lenguaje, no está permitido en este foro, ya que aquí tratamos cosas exclusivas de MySQL... si lo consideras pertinente, publica tu pregunta en el foro de PHP donde los expertos podrán ayudarte en tu problema:

https://www.lawebdelprogramador.com/foros/PHP/index1.html

Ahora bien, tratando tu problema sólo desde el punto de vista de la Base de Datos, cuando hablas de dos bases de datos debes de especificar si las bases de datos se encuentran en el mismo servidor o se encuentran en servidores distintos. Si es el primer caso, la sentencia es algo simple: basta con anteponer el nombre de la Base de datos antes del nombre de la tabla para poder consultas entre ambas BD's, aquí un ejemplo:

supongamos que tenemos dos BD's (pruebas y pruebas_2) y que en ambas existe la misma tabla, entonces, tendríamos algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> connect pruebas;
Connection id:    12
Current database: pruebas
 
mysql> SELECT * FROM pruebas.tabla;
+------+-------------+
| id   | descripcion |
+------+-------------+
|    1 | uno         |
|    2 | dos         |
|    3 | tres        |
+------+-------------+
3 rows in set (0.00 sec)
 
mysql> SELECT * FROM pruebas_2.tabla;
+------+-------------+
| id   | descripcion |
+------+-------------+
|    2 | dos         |
|    3 | tres        |
+------+-------------+
2 rows in set (0.00 sec)

observa que al inicio me conecto a la BD's de pruebas, pero puedo hacer consultas también a la BD's pruebas_2 sin ningún problema. Entonces, puedo obtener un SELECT consultanto ambas BD's para encontrar los registros que existen en la primer tabla pero que no existen en la segunda tabla, es decir, algo como esto:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT *
    -> FROM pruebas.tabla
    -> WHERE NOT EXISTS ( SELECT pruebas_2.tabla.id
    ->                    FROM pruebas_2.tabla
    ->                    WHERE pruebas.tabla.id = pruebas_2.tabla.id);
+------+-------------+
| id   | descripcion |
+------+-------------+
|    1 | uno         |
+------+-------------+
1 row in set (0.00 sec)

y lo mismo podrías hacer para crear una sentencia INSERT INTO.

Ahora bien, si se trata de BD's en servidores distintos, entonces la cosa se complica un poco. Dale un vistazo a esta liga, creo que te puede ser de utilidad.

https://medium.com/@Isidro/sincronizar-base-de-datos-mysql-local-y-remota-usando-terminal-3aa40e19bb9e

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 25/01/2018 17:46:59
hola Leonardo Josué
Muchísimas gracias por tu respuesta pues he probado lo que me aconsejas y funciona perfecto.
mis bases de datos están en el mismo servidor.

una base de datos se llama forli y la otra faenza
las tablas de cada una se llama magazzino

yo debo insertar en forli.magazzino todos los registros que estén en faenza.magazzino que no estén en forli.magazzino

Me podrías hacer el mismo ejemplo pero con la sentencia insert into, no tengo muchos conocimientos de mysql y me resulta un poco difícil escribir las sentencias.
Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por Leonardo Josué (414 intervenciones) el 25/01/2018 18:22:45
Hola de nuevo Yaney:

1
2
Me podrías hacer el mismo ejemplo pero con la sentencia insert into, no tengo muchos conocimientos de
mysql y me resulta un poco difícil escribir las sentencias.

Aquí no vale esto. Está muy mal visto pedir a los foristas que hagan tu trabajo escudándote en que eres novato o no tienes conocimientos en SQL... lo menos que pedimos es que intentes hacer las consultas por tu cuenta y si no puedes, entonces que muestres al menos lo que intentaste hacer para ayudarte a corregir y/o completar lo que haga falta... además, tienes una enorme ayuda en SAN GOOGLE que te puede iluminar en tus tareas diarias, y para ejemplo, checa esta liga:

http://lmgtfy.com/?q=c%C3%B3mo+hacer+un+INSERT+INTO+con+un+SELECT+en+MySQL

Estoy seguro que este ejemplo te será de mucha utilidad en el futuro.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 25/01/2018 18:25:44
Disculpa, no pretendía que me hicieran el trabajo, estoy solo estudiando y aprendiendo.
gracias por tu ayuda de todos modos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 25/01/2018 18:28:59
Ya me extrañaba, la solidaridad y la cortesía no abundan en el mundo.
Gracias por su tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-4
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por xve (1151 intervenciones) el 25/01/2018 20:14:39
Hola Yaney, como bien dice Leonardo, ayudamos a mucha gente a resolver sus dudas en sus desarrollos pero no hacemos los trabajos...

Si buscas códigos de ejemplo y los adaptas y pruebas y no te funciona, sin ninguna duda Leonardo o cualquiera te ayudara a solucionarlos.

Cabe decir que Leonardo ha sido muy cortes y lo explicado correctamente... incluso te ha indicado una url que te ayudara en tu desarrollo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 25/01/2018 20:26:48
Qué parte de
"Me podrías hacer el mismo ejemplo pero con la sentencia insert into"
no se entendió bien???
es español claro

le puse un poco más de datos para explicar más mi idea con nombres reales que se entiende mejor que con tabla1 y tabla2
No dije que me hiciera el trabajo pues para eso debía darle los nombres de los campos, etc.
He visto aquí compañeros que ponen el codigo completo con los datos que les dan los compañeros que hacen las preguntas
No sé por qué la cogió conmmigo que solo estoy tratando de aprender y me pareció la funcion de este foro, pero si es solo vender el conocimiento me equivoqué de lugar.

Si yo tengo una duda, no la puedo preguntar? No sé como se escribe la sentencia de insert into select
quería algo como

insert into aqui va esto select aquí va esto otro
no creo que con eso se le haga el trabajo a nadie, o ustedes como aprendieron? no fue pq alguien les dijo como se escribía una sentencia

le dije que me pusiera el mismo ejemplo que el puso pero en vez de select usara insert into, para yo aprender como se escribe la sentencia de la query insert into que no lo he encontrado en Google, ya que si lo hubiera encontrado no me hubiera dirigido a este foro.

Su falta de cortesía radica en enviarme un link para que buscara en google, faltandome el respeto a mi inteligencia.

No pedi que me hiciera el trabajo, espero que en algun momento se de cuenta de su arrogancia y falta de respeto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-4
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por Leonardo Josué (414 intervenciones) el 25/01/2018 22:39:15
Hola de nuevo Yaney:

En realidad mi intención no era ni la de ofender ni la de ser descortés, y si fue así, de antemano una disculpa, pero te equivocas en varias
cosas:

1
la solidaridad y la cortesía no abundan en el mundo

Estás muy equivocado, ya que este tipo de foros existen gracias a la solidaridad de los participantes, ya que los que estamos aquí lo hacemos con la intención para tratar de ayudar en lo que se pueda.

1
"Me podrías hacer el mismo ejemplo pero con la sentencia insert into"

Aquí me estás pidiendo que haya algo que tú fácilmente podrías hacer (o al menos intentar hacer) y puede que el mensaje no esté escrito en español tan claro ya que entre lo que quisiste escribir, lo que escribiste, lo que leí, y lo que entendí al leer hay muchas posibilidades de que el mensaje no fuera el mismo para ti y para todos los foristas (o al menos para mi).

1
He visto aquí compañeros que ponen el código completo con los datos que les dan los compañeros que hacen las preguntas

Esto es siempre recomendable, de hecho, si te has tomado la molestia en checar algunas de las respuestas que doy en este mismo foro, es algo que siempre pido, que nos pongan la estructura de sus tablas y que nos pongan incluso algunos datos de ejemplo para nosotros mismos poder hacer pruebas y poder darles una ayuda más puntual, sin que eso signifique que vamos hacerles el trabajo.

1
No sé por qué la cogió conmmigo que solo estoy tratando de aprender y me pareció la funcion de este foro, pero si es solo vender el conocimiento me equivoqué de lugar.

Mi comentario tampoco es personal, no tengo el gusto de conocerte y por el número de mensajes en el foro veo que eres relativamente novato así es que difícilmente habíamos coincidido en otro sitio, y por cierto, aquí no "vendemos" conocimiento... al menos a mi no me dan un centavo por contestar para bien o para mal a las preguntas de los foristas pero eso no me impide que todos los días me tome un tiempo para venir a tratar de ayudar si es que puedo.

De cualquier manera, nuevamente una disculpa y espero que hayas podido completar lo que necesitabas, si no es así, te pongo lo mismo que hago siempre en mis posts: Postea lo que intentaste hacer, dinos que va mal con tu consulta y con gusto te ayudamos a corregir y/o completar lo que haga falta.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 25/01/2018 23:21:59
Josué, creo que este es un foro para debatir dudas sobre mysql,
yo hice solo una pregunta.

como insertar registros en una tabla que no está en otra en dos bases de datos diferentes?

Usted me explicó como listar los registros que no están en una tabla y en la otra sí, eso me sirvió para aprender a listar los registros pero no me enseñó a insertar los que no estaban, y pregunté cómo hacer para insertarlos. le vuelvo a preguntar y usted me ha tratado mal aunque no lo acepte así.

Me explica algo, no lo entiendo, y pregunto de nuevo y me dice que le estoy pidiendo que haga mi trabajo.
No, estoy pidiendo que me explique lo que yo pregunté solamente.

cual es la syntaxis de la clausula insert into con selectç

Esa fue mi pregunta, por responder eso no me estaba haciendo el trabajo.


En el foro serán solidarios pero usted no lo ha sido conmigo.

Estoy solo estudiando y no sé hacer algo, lo he buscado en google pero no encuentro cómo hacerlo, el mismo google me envía a este foro, decido crear un tema para preguntar mi duda
Me sentí muy contenta pues su respuesta fue rápida
Y me explicas algo parecido, que me sirvió para aprender algunas cosas, pero no me hace entender lo que yo quiero exactamente, pues como dices soy novata, soy mujer, aclaro.
Pero parece que en este foro hay que saber, no hay lugar para novatos.
Estoy estudiando Mysql por primera vez en mi vida y no tengo la base que quizas se aprende en las escuelas, yo estoy estudiando sola, no vengo de una escuela donde le explican muchos detalles que hacen una base para entender más facil los lenguajes. nunca había estudiado un lenguaje de programación.

Cierro el tema, pues mejor busco ayuda en otro lugar
pues esto no es para debatir lo que cada cual interpreta de lo que el otro dijo.
Si no puede ayudarme más,
gracias por su ayuda inicial que me sirvió de mucho.
Que tenga suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-3
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por Leonardo Josué (414 intervenciones) el 26/01/2018 00:23:01
Hola de nuevo yaney:

Creo que tomaste demasiado personal mi comentario y no revisaste que en la liga en que dices que fui descortés está la respuesta con varios ejemplo a lo que preguntaste desde un inicio

http://www.edu4java.com/es/sql/sql6.html
https://www.thezilus.com/insert-con-un-select

y si aun tienes problemas para entender cómo sería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mysql> SELECT * FROM pruebas.tabla;
+------+-------------+
| id   | descripcion |
+------+-------------+
|    1 | uno         |
|    2 | dos         |
|    3 | tres        |
+------+-------------+
3 rows in set (0.13 sec)
 
mysql> SELECT * FROM pruebas_2.tabla;
+------+-------------+
| id   | descripcion |
+------+-------------+
|    2 | dos         |
|    3 | tres        |
+------+-------------+
2 rows in set (0.08 sec)
 
mysql> INSERT INTO pruebas_2.tabla
    -> SELECT *
    -> FROM pruebas.tabla
    -> WHERE NOT EXISTS ( SELECT pruebas_2.tabla.id
    ->                    FROM pruebas_2.tabla
    ->                    WHERE pruebas.tabla.id = pruebas_2.tabla.id);
Query OK, 1 row affected (0.36 sec)
Records: 1  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM pruebas_2.tabla;
+------+-------------+
| id   | descripcion |
+------+-------------+
|    2 | dos         |
|    3 | tres        |
|    1 | uno         |
+------+-------------+
3 rows in set (0.00 sec)

Es decir, lo único que tienes que agregar a lo que ya te puse es un INSERT INTO, nada más, no hay sintaxis oculta o tienes que inventar el hilo negro.

Ojalá y vuelvas al foro aunque sea por curiosidad pero sobre todo con verdaderas ganas de aprender. Te aseguro que si ese es tu propósito lo vas a conseguir, a pesar de foristas como yo.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por yaney (31 intervenciones) el 26/01/2018 16:15:23
Muchas Gracias,
Lamento los malos entendidos.

Aprendí todo lo que me hacía falta aprender. Este segundo mensaje tenía la ayuda que precisaba.
Cuando sabemos hacer algo es difícil entender cuando alguien no sabe deducir las cosas de algo parecido, pues estas son estructuras, sentencias o sintaxis en las cuales una coma hace una gran diferencia y da un error por el que alguien que no sabe como tú puede pasar días con dolor de cabeza.

Como te digo, es mi primer acercamiento al sql.
para que puedas entender lo que sucede te pongo un ejemplo:
Pidele a alguien que por primera vez esté aprendiendo chino que hable directamente de términos médicos sin antes haber estudiado los saludos en ese idioma... hasta que no aprendas un poco de estructuras gramaticales, etc, no puedes hacer conversaciones avanzadas
es más o menos lo mismo.

Gracias por tu aporte, pues me sirvió de mucha ayuda. La parte que no entiendo de este foro es las restricciones en cuanto a cómo hacer las preguntas, hasta donde se puede preguntar, no puedes mezclar dos cosas que van tanto de la mano como php y mysql, son cosas que hacen difícil el intercambio desde mi punto de vista, pero no soy quién para valorar este foro.

En fin.....

Para los que vengan a este foro por la respuesta de la pregunta que hice, explico:

Lo que quería era sincronizar dos tablas de dos bases de datos diferentes, ambas bases de datos están en el mismo servidor,
basededatos1.tabla1
basededatos2.tabla2

Los cambios se harían solo en basededatos1.tabla1 y la basededatos2.tabla2 se debe sincronizar con la 1

Para lo que (Gracias a los conocimientos aportados por Josué) lo que hice fue:

crear un archivo que me borrara los registros que aparecen en la tabla 2 y no en la 1.
crear un archivo que insertara en tabla 2 los registros que se insertaran nuevos en tabla 1

Este fue el modo que encontré para tener las dos tablas iguales, donde no puedo copiar toda la tabla pues en la basededatos2.tabla2 habrán campos con datos diferentes. Si alguien conoce otro modo de sincronizar tablas en mysql, pues que lo explique, yo lo hice así.

Gracias nuevamente Josué por tu aporte y tu tiempo.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar registros en una tabla que no están en otra

Publicado por Leonardo Josué (414 intervenciones) el 26/01/2018 18:44:40
Hola de nuevo Yaney:

También lamento los malos entendidos. Asumo la parte de culpa que me toca, pero como te habrás dado cuenta nunca fue mi intención no ayudarte.

Lo que pretendía era demostrarte que lo que preguntabas era bastante simple y que no había necesidad de volver a recurrir a los foros a preguntar, cuando con un poquito de esfuerzo podrías haber encontrado la respuesta. Tal vez las formas no fueron las correctas y por eso te vuelvo a pedir una disculta.

Sigo sin compartir tu forma de pensar, sobre todo porque te escudas en el hecho de ser novata. Como te dije desde el inicio, aquí eso no vale y creo que hablo por todos los que colaboramos en este y otros foros. Lo mínimo que pedimos es que los que preguntan algo de verdad hayan hecho un esfuerzo por encontrar la respuesta por su cuenta. En tu caso tomaste mi comentario como una agresión y como te dije, tal pareciera que ni siguiera te tomaste el tiempo para analizar con cabeza fría lo que ahí te había puesto.

En el foro no pretendemos ser los expertos ni tener toda la razón del mundo. Al contrario, estamos aquí con la disposición de tratar de ayudar, pero sobre todo de APRENDER. Yo mismo comencé hace ya muchos años como un novato preguntando y lo sigo haciendo. Tanto en este foro como en otros.

En cuanto esto que comentas:

1
2
3
"La parte que no entiendo de este foro es las restricciones en cuanto a cómo hacer las preguntas, hasta
donde se puede preguntar, no puedes mezclar dos cosas que van tanto de la mano como php y mysql, 
son cosas que hacen difícil el intercambio desde mi punto de vista, pero no soy quién para valorar este foro."

La razón de las restricciones no es por que simplemente se le ocurrió a los creadores del sitio, sino que en realidad tienen el objetivo de que encuentres la ayuda de manera lo más pronto posible. Yo por ejemplo, he trabajado por muchos años con MySQL, pero nunca he programado con PHP (lo he hecho con JAVA, .NET, Delphi). entonces, si hubieras publicado tu pregunta en el foro de PHP, lo más seguro es que nunca te hubieras tenido que topar conmigo (cosa que no necesariamente sería algo malo :P) porque yo seguramente nunca habría leído tu mensaje.

Lo mismo pasa a la inversa, puede haber verdaderos expertos en PHP que nunca hayan trabajado con MySQL, sino que trabajen con ProsgreSQL, Oracle, SQL Server, Firebird y un largo etc. Por lo tanto, si publicas un problema de PHP en este foro de MySQL, es posible que esos expertos no te puedan ayudar.

Finalmente, con respecto a esto que comentas:

1
2
3
Este fue el modo que encontré para tener las dos tablas iguales, donde no puedo copiar toda la tabla pues
en la basededatos2.tabla2 habrán campos con datos diferentes. Si alguien conoce otro modo de sincronizar tablas
en mysql, pues que lo explique, yo lo hice así.

En realidad no debes de tener problemas si las dos tablas tienen campos distintos, simplemente lo que tienes que hacer es cambiar el SELECT para tomar sólo los campos que necesites. Cuando utilizas un SELECT *, MySQL toma el supuesto de que ambas tablas tienen la misma estructura y el mismo orden, pero esto no tiene que ser así. En la segunda liga que te puse y que espero que hayas revisado, no hacen un SELECT *, fino que hacen un select con el los campos que realmente necesita, agregando en primer lugar la lista de los campos que se quieren insertar y después, en el SELECT, colocando sólo los campos que necesita:

1
2
3
4
INSERT INTO vendedores ( `nombre`, `tienda`,`direccion`)
   SELECT ‘Fulano’, `Tiendita`, tienda_id
   FROM tiendas
   WHERE tiendas.direccion=’Av. Siempreviva 10′

Y si esto no te queda claro, aquí va un ejemplo más completo. Supongamos ahora que tienes estas tablas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> SELECT * FROM pruebas.tabla;
+------+-------------+--------+--------+
| id   | descripcion | campo1 | campo2 |
+------+-------------+--------+--------+
|    1 | uno         | one    | I      |
|    2 | dos         | two    | II     |
|    3 | tres        | three  | III    |
+------+-------------+--------+--------+
3 rows in set (0.00 sec)
 
mysql> SELECT * FROM pruebas_2.tabla;
+------+-------------+--------+
| id   | descripcion | campo1 |
+------+-------------+--------+
|    2 | dos         | two    |
|    3 | tres        | three  |
+------+-------------+--------+
2 rows in set (0.00 sec)


Esto quiere decir, que ambas tablas NO TIENEN EL MISMO NUMERO DE COLUMNAS, entonces, si tratas de hacer el INSERT con un SELECT * ocurrirá un error:

1
2
3
4
5
6
7
mysql> INSERT INTO pruebas_2.tabla
    -> SELECT *
    -> FROM pruebas.tabla
    -> WHERE NOT EXISTS ( SELECT pruebas_2.tabla.id
    ->                    FROM pruebas_2.tabla
    ->                    WHERE pruebas.tabla.id = pruebas_2.tabla.id);
ERROR 1136 (21S01): Column count doesn't match value count at row 1

Entonces, qué tienes que hacer??? pues cambiar el SELECT COMO TU QUIERAS, es decir, SOLO TIENES QUE PASAR A TU TABLA LO QUE REALMENTE TE INTERESA:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> INSERT INTO pruebas_2.tabla (id, descripcion, campo1)
    -> SELECT id, descripcion, 'un valor constante'
    -> FROM pruebas.tabla
    -> WHERE NOT EXISTS ( SELECT pruebas_2.tabla.id
    ->                    FROM pruebas_2.tabla
    ->                    WHERE pruebas.tabla.id = pruebas_2.tabla.id);
Query OK, 1 row affected (0.10 sec)
Records: 1  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM pruebas_2.tabla;
+------+-------------+--------------------+
| id   | descripcion | campo1             |
+------+-------------+--------------------+
|    2 | dos         | two                |
|    3 | tres        | three              |
|    1 | uno         | un valor constante |
+------+-------------+--------------------+
3 rows in set (0.00 sec)

¿Se entiende?, haz la prueba y nos comentas.

Finalmente, es muy común que los foristas digan "la sentencia me marcó un error", pero no nos dicen qué error es. Dado que en el foro no contamos con adivinos, resulta complicado tratar de identificar cuál es es problema. tu misma lo dices al inicio de tu último post, puede ser un error de sintaxis, un error de lógica o inclusive que la sentencia no te marque ningún error, pero que no haga lo que pretendías que hiciera. Entre más específica sea tu duda, más factible será que podamos tratar de ayudarte.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Insertar registros en una tabla que no están en otra

Publicado por Jairo Carrasco-Nicaragua (1 intervención) el 10/08/2020 01:24:20
Agradezco mucho la colaboración, también estoy estudiando, y me sirvió toda la conversación... ya probé, y me funcionó.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Insertar registros en una tabla que no están en otra

Publicado por Jim (1 intervención) el 11/11/2019 23:08:51
usa

insert ignore into pruebas2.tabla ( id, descripcion ) select id, descripcion from pruebas.tabla

id, debe ser primary key en ambas tablas


Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar