2012-11-10 2 views
0
INSERT INTO min_product (shopid, productid , outward) 
SELECT shopid, productid , outward 
FROM main_product 
WHERE shopid= '51' 
    ON DUPLICATE KEY UPDATE outward = (SELECT sum(outward) 
             FROM main_product WHERE shopid= '51') 

table main_productsur la mise à jour ne marche pas de mise à jour clé en double insérer plutôt une rangée

productid outward shopid 
    333  2  44//present 
    343  4  44//present 
    353  5  44//present 
    363  1  44//present 
    373  2  44//not present 

table min_product

productid outward shopid 

333  1  44 
343  1  44 
353  1  44 
363  1  44 

le problème est qu'il ne marche pas mise à jour sur la ligne double plutôt une nouvelle la ligne est insérée? quel est le problème dans la requête ON DUPLICATE KEY UPDATE

+1

Vous n'avez probablement pas une clé clé unique définie –

+0

@juergend unique est 'productid' – Aryan

+0

@JohnWoo Je dois vérifier basé sur' productid' – Aryan

Répondre

0

Si votre base de données permet de la ligne double à insérer votre table ne se définit pas correcte - mise à jour est effectuée uniquement si est inséré un double d'un index UNIQUE ou PRIMARY KEY

INSERT ... ON DUPLICATE KEY UPDATE Syntax

+0

pouvez-vous me dire comment mettre à jour et insérer pour une rangée unique pour les tableaux ci-dessus – Aryan

Questions connexes