Poster une réponse à un sujet: [SQL] update d'un champ par rapport à un autre champ?
Attention, ce sujet est un sujet ancien (6076 jours sans réponse)
zion
JC> On le fait pour des raisons de performance souvent. Exemple ici, de calculer le nombre de topics dans une catégorie ou de messages dans un topic ce sont des valeurs calculées, mais stockées pour éviter des calculs qui pénaliseraient gravement l'affichage
C'est juste pour la performance
C'est juste pour la performance
Jean-Christophe
Tiens, blague à part, je croyais qu'on ne devait pas stocker de valeur calculée dans une DB. Je suppose qu'il y a une raison, non?
Pourquoi tu le fais, alors?
Pourquoi tu le fais, alors?
blietaer
Mon truc a marché
et donc _chou tu confirmes?
et donc _chou tu confirmes?
Jean-Christophe
Pour les questions relatives à SQL, je vous invite à prendre contact avec chou_ qui a suivi une formation poussée dans le domaine
blietaer
indice:
UPDATE mytable SET champ_vierge = CONCAT(SUBSTRING(timestamp, 1,9), SUBSTRING( LPAD(SUBSTRING(timestamp,10,6)+500, 6,'0'),1,3));
Tourne pendant des minutes et des minutes (ok y a 12.700.000 rows, mais bon...)
Mais j'ai pas mis de WHERE, ni de FROM ni de...bref, j'ai peur!
UPDATE mytable SET champ_vierge = CONCAT(SUBSTRING(timestamp, 1,9), SUBSTRING( LPAD(SUBSTRING(timestamp,10,6)+500, 6,'0'),1,3));
Tourne pendant des minutes et des minutes (ok y a 12.700.000 rows, mais bon...)
Mais j'ai pas mis de WHERE, ni de FROM ni de...bref, j'ai peur!
blietaer
Une table.
Une colonne de timestamp, du genre:
+-----------------+
| timestamp |
+-----------------+
| 16:07:03.611959 |
| 16:07:05.031506 |
| 16:07:05.158316 |
| 16:07:05.158477 |
| 16:07:05.192583 |
| 16:07:05.291956 |
| 16:07:05.319757 |
| 16:07:05.411969 |
| 16:07:05.441306 |
| 16:07:05.542032 |
+-----------------+
Pas besoin de la micro-seconde, donc on arrondi:
+-----------------------------------------------------------------------------------------------+
| CONCAT(SUBSTRING(timestamp, 1,9), SUBSTRING( LPAD(SUBSTRING(timestamp,10,6)+500, 6,'0'),1,3)) |
+-----------------------------------------------------------------------------------------------+
| 16:07:03.612 |
| 16:07:05.032 |
| 16:07:05.158 |
| 16:07:05.158 |
| 16:07:05.193 |
| 16:07:05.292 |
| 16:07:05.320 |
| 16:07:05.412 |
| 16:07:05.441 |
| 16:07:05.542 |
+-----------------------------------------------------------------------------------------------+
10 rows in set (0.00 sec)
Mais maintenant je veux placer ce résultat dans une autre colonne (vierge) de la MEME table..
Donc,
UPDATE mytable SET champ_vierge = ....?
merci!
Une colonne de timestamp, du genre:
+-----------------+
| timestamp |
+-----------------+
| 16:07:03.611959 |
| 16:07:05.031506 |
| 16:07:05.158316 |
| 16:07:05.158477 |
| 16:07:05.192583 |
| 16:07:05.291956 |
| 16:07:05.319757 |
| 16:07:05.411969 |
| 16:07:05.441306 |
| 16:07:05.542032 |
+-----------------+
Pas besoin de la micro-seconde, donc on arrondi:
+-----------------------------------------------------------------------------------------------+
| CONCAT(SUBSTRING(timestamp, 1,9), SUBSTRING( LPAD(SUBSTRING(timestamp,10,6)+500, 6,'0'),1,3)) |
+-----------------------------------------------------------------------------------------------+
| 16:07:03.612 |
| 16:07:05.032 |
| 16:07:05.158 |
| 16:07:05.158 |
| 16:07:05.193 |
| 16:07:05.292 |
| 16:07:05.320 |
| 16:07:05.412 |
| 16:07:05.441 |
| 16:07:05.542 |
+-----------------------------------------------------------------------------------------------+
10 rows in set (0.00 sec)
Mais maintenant je veux placer ce résultat dans une autre colonne (vierge) de la MEME table..
Donc,
UPDATE mytable SET champ_vierge = ....?
merci!