Código:
DROP TABLE IF EXISTS `forum`.`campanya`;
CREATE TABLE `forum`.`campanya` (
`idcampanya` int(11) NOT NULL,
PRIMARY KEY (`idcampanya`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `forum`.`vendes`;
CREATE TABLE `forum`.`vendes` (
`idvenda` int(11) NOT NULL auto_increment,
`idcampanya` int(11) NOT NULL,
`idproducte` int(11) NOT NULL,
PRIMARY KEY (`idvenda`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
INSERT INTO campanya (idcampanya)
SELECT DISTINCT v.idcampanya
FROM vendes v LEFT JOIN campanya c
ON v.idcampanya=c.idcampanya
WHERE c.idcampanya Is Null;
Esto funciona con MySql 5.0.45, y creo que es una situación similar a la que expones...
Estoy haciendo un INSERT INTO a una tabla usandola en el select, la unica diferencia esta en el DISTICNT que lo he tenido que poner porque en mi caso idcampanya no era unico en la tabla de donde se sacan los datos (vendes)...
No estamos indicando la misma tabla de destino y de origen, de origen usamos una consulta sobre esta tabla y otra, no hay conflicto!!!
Bandit_S si nos pasas la definicion completa de las tablas quizas vemos algo.
La solución de la tabla temporal si no es una oparación que vayas ha hacer habitualmente no es mala.
Quim