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