Je dois insérer un grand nombre de lignes à une table basic_data
comme ceci:L'utilisation Duplicate KEY UPDATE pour grande insertion automatique
basic_data
client | max_sale | total_sales
CREATE TABLE `basic_data` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`customer` int(11) NOT NULL ,
`total_sales` decimal(15,2) NOT NULL ,
`max_sale` tinyint(2) NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE INDEX `customer` USING BTREE (`customer`)
)
Comme je l'ai (client, max_sale) et (client, total_sales) dans différentes requêtes, je voudrais savoir s'il est possible de remplir le tableau de sorte qu'un client a juste une ligne avec les deux valeurs max_sale
et total_sales
.
Mes requêtes d'insertion sont:
INSERT INTO
basic_data (customer, max_sale)
SELECT a.customer, a.max_sale
FROM sales a
....
GROUP BY customer;
INSERT INTO
basic_data (customer,total_value)
SELECT customer, SUM(sales) total_value
FROM sales a
GROUP BY customer;
Et j'ai lu je peux utiliser ON DUPLICATE KEY UPDATE
mais ne parviennent pas à l'utiliser correctement.
Mes tentatives
INSERT INTO
basic_data (customer,total_value)
SELECT customer, SUM(sales) total_value
FROM sales a
GROUP BY customer
ON DUPLICATE KEY person UPDATE total_value = ...
ont échoué et je pense que c'est parce que ON DUPLICATE KEY
ne fonctionne pas avec GROUP BY
.
Une idée de comment stocker des données de cette façon? Grand merci.
Mmm ne semble pas fonctionner, je reçois un 'Unknown column 'a.total_value' dans le message « list'' sur le terrain. – fedorqui
essayer 'SUR DUPLICATE KEY UPDATE total_value = SUM (ventes)' –
J'ai essayé et je reçois '[Err] 1111 - Utilisation invalide de la fonction de groupe' – fedorqui