Bueno, por suerte una alma caritativa (a la que le agradezco mucho la ayuda), me echó una mano indicándome que utilizara una CTE para mi sql, quedando algo parecido a ésto:
Código SQL:
Ver originalWITH DESTINO AS (
SELECT empresa, campo1, campo2, campo3, campo4
FROM OPENQUERY(SERVIDOR_MYSQL, 'campo1, campo2, campo3, campo4 FROM SRV_VINCULADO.bd.tabla1')
)
MERGE INTO DESTINO
USING ([BD_ORIGEN].[dbo].[tabla1]) AS ORIGEN
ON (ORIGEN.campo1 = DESTINO.campo1 AND ORIGEN.campo2 = DESTINO.campo2)
WHEN MATCHED THEN UPDATE
SET DESTINO.campo3 = ORIGEN.campo3,
DESTINO.campo4 = ORIGEN.campo4
WHEN NOT MATCHED THEN INSERT
VALUES(ORIGEN.campo1,
ORIGEN.campo2,
ORIGEN.campo3,
ORIGEN.campo4)
WHEN NOT MATCHED BY SOURCE THEN DELETE;
Con lo cual, el alias ya no es un problema, pero la selec ahora me devuelve el siguiente error:
"El destino de una instrucción MERGE no puede ser una tabla remota, una vista remota o una vista sobre tablas remotas"
Merge me facilita mucho el trabajo a la hora de estar actualizando/insertando registros en mysql, pero parece que tiene la "limitación" que describe el error anterior.
El servidor de SQLSERVER lo tengo en local, pero el de MYSQL está alojado fuera.
El sentido de la inserción siempre sería de SQLSERVER > MYSQL, nunca a la inversa.
Alguien se ha encontrado con algo parecido?
Muchas gracias!