2011-08-22 6 views
2

Voici un exemple:MySQL: champ de mise à jour avec le groupe par

schéma table mysql:

 
id name salary 
1 david 20 
2 jack 30 
3 david 10 

Requête:

 

$sql = "UPDATE table SET salary = salary + 5 WHERE name = 'david' "; 
 

Je veux ajouté Group By name pour éviter double mise à jour pour david Comment est-ce que je pourrais faire cela?

+2

Quelle rangée allez-vous mettre à jour, 1 ou 3 dans votre exemple? –

+0

Voulez-vous mettre à jour les deux lignes ou seulement l'une d'elles? Si c'est le cas, vous devrez utiliser une requête différente en utilisant le 'id' et pas' name'. – McHerbie

+0

Cela n'a même pas de sens. Comment GROUP BY définirait-il «david» auquel vous faites référence? –

Répondre

2

Essayez d'utiliser LIMIT, qui est une extension de SQL utilisée par MySQL:

$sql = "UPDATE table SET salary = salary + 5 WHERE name = 'david' 
     ORDER BY id LIMIT 1"; 

Il n'a pas de sens d'utiliser GROUP BY, car il serait douteux que de mettre à jour la première ligne du groupe, ou la dernière rangée, ou toutes les rangées. MySQL ne prend pas en charge une clause GROUP BY dans l'instruction UPDATE.

+0

simple comme ça: 0 – Cheerio