Me resulta muy interesante el video, no se casi nada de SQL pero la verdad me ha dejado sorprendido lo que puede hacer, me funciona perfecto cuando son pocos datos, sin embargo hay dos problemas que tengo. 1.- mis datos origen como los datos que quiero comparar son de 1 millón 2.- algunos de mis datos que deseo comparar se duplican con mis datos origen, ya que en esencia lo que necesito es actualizar cierta información y cuando no exista me inserte un nuevo registro.
Este es el error que me arroja, espero me puedan orientar saludos. La instrucción MERGE intentó ACTUALIZAR o ELIMINAR la misma fila más de una vez. Esto sucede cuando una fila de destino coincide con más de una fila de origen. Una instrucción MERGE no puede ACTUALIZAR/ELIMINAR la misma fila de la tabla de destino varias veces. Refine la cláusula ON para garantizar que una fila de destino coincida como máximo con una fila de origen, o use la cláusula GROUP BY para agrupar las filas de origen.
Hola binario, si ya solucionaste este problema, me cuentas como, si no, podrías utilizar previo a este un Common table expression para discriminar datos repetidos, y posterior a eso realizar el MERGE, espero que me haya dado a entender.
Hola binario, graciass y bienvenido, he probado eso que dices, pero también he notado que es porque dejo la sesión abierta y a veces se va la red y se pierde, se arregla hasta que cierro todo.
Increíble vídeo , el ejemplo es como cuando en la tabla máster un estudiante esta registrado pero luego se da de baja en la tabla de por ejemplo un campus , así sería una buena forma de actualizar la tabla matriz
Hola...!! En la opción de Edit, encuentras IntelliSense y ahí puedes refrescar la Memoria Cache, para solucionar el inconveniente de las marcas rojas. Gracias por el curso.
Hola, exelente video y explicación !!!!, deseo saber de que forma es posible ejecutar este MERGE en sql server sin la necesidad de ejecutarlo manualmente, se puede diseñar un job por ejemplo en sql ???
Hola, se puede utilizar desde un JOB, pero personalmente lo implemento desde un stored procedure. ua-cam.com/video/1IBLXDXRAAs/v-deo.htmlsi=vbO5ik1nEiubtYTG ua-cam.com/video/5_KPpmh1gKo/v-deo.htmlsi=kNZD72226yutBKXq
@@mundobinariobyaxel un abrazo y gracias por tan excelente contenido y de tan Buena calidad !!! . Usted me have ver que no todo en UA-cam es Mal contenido
Muchas gracias buen video, tengo una pregunta si una tabla que tenga muchas columnas hay forma de parametrizar en los update he insert que tome todas todas las columnas sin especificarlas.Gracias
Hola binario, no he intentado eso, yo creo que si se debe especificar, al final por buena practica recuerda que al hacer un INSERT debes especificar las columnas, aunque si no lo haces, el INSERT también lo seguirá haciendo bien, pero como recomendación, siempre hay que ser lo más organizados posibles. Aquí te dejo un blog que hable de MERGE :) www.sqlshack.com/understanding-the-sql-merge-statement/
Excelente!! tengo una duda ya que al parecer tengo duplicados al momento de hacer el match, se debe realizar un group by? y si es así como seria la solución?
Hola, bienvenida al canal, se me hace muy interesante tu pregunta y quiero entender lo del listado de tablas, es decir ¿hacer INSERT a varias tablas dentro del mismo merge?
@@5516472552 Ohhh, no se podría ya que el merge solo soporta un source y un target pero si me cuentas un ejemplo donde se podría aplicar, me pondrías a pensar en la mejor solución
Una pregunta: Qué pasaría si tengo en mi tabla source un valor que quiero asignar a la tabla target, pero resulta que hace un match en ambos y al actualizar la tabla source le pasa casi todos los valores diferentes a la tabla target, exceptuando el id, pero resulta que yo en realidad no quiero que se elimine la información en la tabla target o se modifique para que se pierda? Para entender más mi pregunta te pondría este caso. Digamos que en la tabla source yo tengo id=1 y nombre = "Félix" y en la target yo tengo id=1 y nombre = "María", pues en este caso como ambas tablas se relacionan por el id y resulta que hacen un match, entonces Félix reemplazaría a María y esta ya no estará en ninguna de las tablas perdiendo datos en el proceso. Será que debo de hacer en la conexión de ambas tablas con el keyword ON utilizar el nombre y no el id para que así en ese campo no me haga match e inserte a Félix en un registro nuevo? Espero tus respuestas con ansias.
Holaaa, muy buena duda, puedes colocar un WHERE [source].[name] [target].[name], me cuentas si funcionooo y disculpa por llegar con la respuesta hasta ahora.
@@mundobinariobyaxel Si, esa duda la comprobé, pero muchas gracias de todos modos. Tu video fue muy útil para entenderlo. Y otra pregunta: Es necesario conocer este tipo de temas para que te den un trabajo como desarrollador, necesitas saber muchos de estos temas sql o lo puedes ir aprendiendo sobre la marcha una vez que consigues trabajo? Ya que sigo aprendiendo sql y sé casi la mayoría de sentencias sql que dan en los cursos en youtube, pero a veces veo muchas cosas nuevas más y me decepciono porque creía que sabía todo lo necesario.
@@felixpaniagua6018 No es necesario saber todas las sentencias, te puedo contar que llevo 6+ años trabajando con SQL y luego surge un escenario nuevo y es cuando aplico comando que jamás había utilizado, respondiendo es que puedes ir aprendiendo sobre la marcha, como es en casi todas las carreras, un abrazo
Tengo un problema, y que en entorno productivo, al ejecutarse el mismo sp ( dos merge consecutivos a distintas tablas) se genera deadlocks, el. Merge no permite usar unread commited ni with no lock, que opciones podria usar para evitar estos dead locks? Regresar a opersciones de update e insert? Gracias.... Colegas
Uffff eso no me ha sucedido, y no se me ocurre que podría ser, si de pronto ya lo solucionaste, me cuentas como fue porque no quiero quedarme con la duda
No reconocía la tabla debido a que cuando se creo la tabla StudentC2 no se incluyo la palabra reservada GO para que SQLServer detecte un nuevo componente.
Hola, yo lo hago porque ya es un hábito y buena practica, pero te dejo esta respuesta que se me hace aún más interesante. es.stackoverflow.com/questions/133007/cual-es-la-sintaxis-correcta-de-un-select-en-sql-server-alias
Muchas gracias tu video me sirvió de mucho al inicio se veía muy complicado pero explicandolo te das cuenta que en verdad es sencillo.
Hola bin, estos mensajes me motivan bastante, saludos y te deseo buenos scripts 🔝
Buenas noches, muy muy interesante... Gracias y saludos de Guatemala
Saludooos Randolfo y saludos binarios hasta allá
Me resulta muy interesante el video, no se casi nada de SQL pero la verdad me ha dejado sorprendido lo que puede hacer, me funciona perfecto cuando son pocos datos, sin embargo hay dos problemas que tengo.
1.- mis datos origen como los datos que quiero comparar son de 1 millón
2.- algunos de mis datos que deseo comparar se duplican con mis datos origen, ya que en esencia lo que necesito es actualizar cierta información y cuando no exista me inserte un nuevo registro.
Este es el error que me arroja, espero me puedan orientar saludos.
La instrucción MERGE intentó ACTUALIZAR o ELIMINAR la misma fila más de una vez. Esto sucede cuando una fila de destino coincide con más de una fila de origen. Una instrucción MERGE no puede ACTUALIZAR/ELIMINAR la misma fila de la tabla de destino varias veces. Refine la cláusula ON para garantizar que una fila de destino coincida como máximo con una fila de origen, o use la cláusula GROUP BY para agrupar las filas de origen.
Hola binario, si ya solucionaste este problema, me cuentas como, si no, podrías utilizar previo a este un Common table expression para discriminar datos repetidos, y posterior a eso realizar el MERGE, espero que me haya dado a entender.
Muchas gracias, muy bien explicado! El problemita del 'spelling' se puede solucionar con la función de IntelliSense. Se ejecuta con CTRL+SHIFT+R
Hola binario, graciass y bienvenido, he probado eso que dices, pero también he notado que es porque dejo la sesión abierta y a veces se va la red y se pierde, se arregla hasta que cierro todo.
Gracias máster
Se suma un nuevo suscriptor.
Bienvenido al canal 🚀, espero estar leyéndote por aquí, si llegas a tener alguna duda y si puedo responderla lo haré, saludos 😎
Increíble vídeo , el ejemplo es como cuando en la tabla máster un estudiante esta registrado pero luego se da de baja en la tabla de por ejemplo un campus , así sería una buena forma de actualizar la tabla matriz
exactamente, mejor no lo pudiste describir 🚀🚀
@@mundobinariobyaxel aún los debes uno de ssis , data factory o por que no spark hahahaha.
Saludos
Me encantó muchísimo. Mil gracias por tu enseñanza. 🌧⛈💨🥂🧑🍼👼👷🇲🇽
Es uno de mis comandos favoritos también 🔝
Gracias por el video, me funciono mucho
¡De nada bin 👾! Me alegra mucho saber que el video te fue útil. ¡Gracias por tu apoyo! 🚀
Gracias master , muy practica como siempre. ;)
Abrazo mi bin 🚀🚀
Hola...!! En la opción de Edit, encuentras IntelliSense y ahí puedes refrescar la Memoria Cache, para solucionar el inconveniente de las marcas rojas.
Gracias por el curso.
Gracias por tu feedback mi binario 😎😎
Excelente explicación, muchas gracias! Nuevo suscriptor por acá.
Bienvenido a la comunidad 🥳
Excelente contenido.
Gracias gracias mi bin 💯
Hola, exelente video y explicación !!!!, deseo saber de que forma es posible ejecutar este MERGE en sql server sin la necesidad de ejecutarlo manualmente, se puede diseñar un job por ejemplo en sql ???
Hola, se puede utilizar desde un JOB, pero personalmente lo implemento desde un stored procedure.
ua-cam.com/video/1IBLXDXRAAs/v-deo.htmlsi=vbO5ik1nEiubtYTG
ua-cam.com/video/5_KPpmh1gKo/v-deo.htmlsi=kNZD72226yutBKXq
Máster debería hacer una playlist de SSIS y luego llevarlo a data factory !!!. Saludos
uffff estaría increíble, lo voy a considerar, te mando un abrazo.
@@mundobinariobyaxel un abrazo y gracias por tan excelente contenido y de tan Buena calidad !!! .
Usted me have ver que no todo en UA-cam es Mal contenido
Muchas gracias buen video, tengo una pregunta si una tabla que tenga muchas columnas hay forma de parametrizar en los update he insert que tome todas todas las columnas sin especificarlas.Gracias
Hola binario, no he intentado eso, yo creo que si se debe especificar, al final por buena practica recuerda que al hacer un INSERT debes especificar las columnas, aunque si no lo haces, el INSERT también lo seguirá haciendo bien, pero como recomendación, siempre hay que ser lo más organizados posibles.
Aquí te dejo un blog que hable de MERGE :)
www.sqlshack.com/understanding-the-sql-merge-statement/
Muchas gracias hermano, todo muy claro. ¿podrias recomendarme alguna pagina o archivo para practicar con ejercicios?. Saludos.
De nada bin, si quieres practicar aquí te dejo una página muy recomendada. sqliteonline.com/
Excelente!! tengo una duda ya que al parecer tengo duplicados al momento de hacer el match, se debe realizar un group by? y si es así como seria la solución?
Hola binario, intenta con DISTINCT y sino con la idea que traes del group by, pero con el DISTINCT debería quedar
Buenas tardes, super interesante el tema, pero subiendo el grado de dificultad un poco, se podría hacer un merge con un listado de tablas ?
Hola, bienvenida al canal, se me hace muy interesante tu pregunta y quiero entender lo del listado de tablas, es decir ¿hacer INSERT a varias tablas dentro del mismo merge?
@@mundobinariobyaxel insert o Update pero es correcto a varias tablas en diferentes bases de datos todo dentro el mismo merge
@@5516472552 Ohhh, no se podría ya que el merge solo soporta un source y un target pero si me cuentas un ejemplo donde se podría aplicar, me pondrías a pensar en la mejor solución
Una pregunta: Qué pasaría si tengo en mi tabla source un valor que quiero asignar a la tabla target, pero resulta que hace un match en ambos y al actualizar la tabla source le pasa casi todos los valores diferentes a la tabla target, exceptuando el id, pero resulta que yo en realidad no quiero que se elimine la información en la tabla target o se modifique para que se pierda? Para entender más mi pregunta te pondría este caso. Digamos que en la tabla source yo tengo id=1 y nombre = "Félix" y en la target yo tengo id=1 y nombre = "María", pues en este caso como ambas tablas se relacionan por el id y resulta que hacen un match, entonces Félix reemplazaría a María y esta ya no estará en ninguna de las tablas perdiendo datos en el proceso. Será que debo de hacer en la conexión de ambas tablas con el keyword ON utilizar el nombre y no el id para que así en ese campo no me haga match e inserte a Félix en un registro nuevo? Espero tus respuestas con ansias.
Holaaa, muy buena duda, puedes colocar un WHERE [source].[name] [target].[name], me cuentas si funcionooo y disculpa por llegar con la respuesta hasta ahora.
@@mundobinariobyaxel Si, esa duda la comprobé, pero muchas gracias de todos modos. Tu video fue muy útil para entenderlo. Y otra pregunta: Es necesario conocer este tipo de temas para que te den un trabajo como desarrollador, necesitas saber muchos de estos temas sql o lo puedes ir aprendiendo sobre la marcha una vez que consigues trabajo? Ya que sigo aprendiendo sql y sé casi la mayoría de sentencias sql que dan en los cursos en youtube, pero a veces veo muchas cosas nuevas más y me decepciono porque creía que sabía todo lo necesario.
@@felixpaniagua6018 No es necesario saber todas las sentencias, te puedo contar que llevo 6+ años trabajando con SQL y luego surge un escenario nuevo y es cuando aplico comando que jamás había utilizado, respondiendo es que puedes ir aprendiendo sobre la marcha, como es en casi todas las carreras, un abrazo
Tengo un problema, y que en entorno productivo, al ejecutarse el mismo sp ( dos merge consecutivos a distintas tablas) se genera deadlocks, el. Merge no permite usar unread commited ni with no lock, que opciones podria usar para evitar estos dead locks? Regresar a opersciones de update e insert?
Gracias.... Colegas
Uffff eso no me ha sucedido, y no se me ocurre que podría ser, si de pronto ya lo solucionaste, me cuentas como fue porque no quiero quedarme con la duda
No reconocía la tabla debido a que cuando se creo la tabla StudentC2 no se incluyo la palabra reservada GO para que SQLServer detecte un nuevo componente.
Binario, entonces HOY he aprendido algo nuevo hoy de ti. Muchas gracias 👾
consulta.... porque son los corchetes???
Hola, yo lo hago porque ya es un hábito y buena practica, pero te dejo esta respuesta que se me hace aún más interesante. es.stackoverflow.com/questions/133007/cual-es-la-sintaxis-correcta-de-un-select-en-sql-server-alias
4 vídeos que dicen "privados" no dejan verlos...
Ohhh, son los que están programados para publicarse cada Jueves 🚀