with values used the see query not infile how ejemplo data content allowed all mysql insert union

values - No se puede usar UNION en INSERT MySQL?



show table values mysql (1)

Supongo que te falta una cláusula SELECT en la parte superior de las selecciones individuales. Además, los paréntesis no eran apropiados. Pruebe esto en su lugar:

INSERT INTO `some_table` SELECT * FROM ( SELECT DISTINCT NULL AS `id`, NULL AS `core_value_id`, NULL AS `translation_id`, t1.`upc` AS `source_value`, t1.`upc` AS `value`, COUNT(*) AS `count` FROM `source_table_1` t1 GROUP BY `upc` UNION ALL SELECT DISTINCT NULL, NULL, NULL, t1.`upc`, t1.`upc`, COUNT(*) AS `count` FROM `source_table_2` t1 GROUP BY `upc` ) AS dt ORDER BY `count` DESC

Tengo una consulta de selección que funciona bien. Pero cuando lo envuelvo en una declaración INSERT, obtengo un error.

Error 1064: tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta que se debe usar cerca de ''(SELECT DISTINCT NULL AS id , NULL AS core_value_id , NULL AS translation_id '' en la línea 3

Puedo resolver este problema usando 1 inserto para cada tabla fuente. Pero, ¿hay alguna forma de hacerlo con una sola consulta? ¿Por qué no está funcionando?

Aquí está la consulta.

INSERT INTO `some_table` ( (SELECT DISTINCT NULL AS `id`, NULL AS `core_value_id`, NULL AS `translation_id`, t1.`upc` AS `source_value`, t1.`upc` AS `value`, COUNT(*) AS `count` FROM `source_table_1` t1 GROUP BY `upc`) UNION ALL (SELECT DISTINCT NULL,NULL,NULL, t1.`upc`, t1.`upc`, COUNT(*) AS `count` FROM `source_table_2` t1 GROUP BY `upc` ) ORDER BY `count` DESC )

Aquí está la definición de la tabla:

CREATE TABLE `some_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `core_value_id` int(11) DEFAULT NULL, `translation_id` int(11) DEFAULT NULL, `source_value` varchar(255) NOT NULL, `value` varchar(255) DEFAULT NULL, `count` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `core_value_id` (`core_value_id`), KEY `translation_id` (`translation_id`), KEY `source_value` (`source_value`), KEY `value` (`value`), KEY `count` (`count`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

source_tables se vería así:

CREATE TABLE `source_table_1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `upc` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8

Las columnas de upc tendrían datos como:

123456789012 123456789013 123456789014 123456789015 123456789016 123456789017