Je veux mettre à jour ma table pour toutes les personnes dont l'activité a duré trop longtemps. La mise à jour devrait corriger une fois et pour les lignes suivantes je dois faire face à un nouveau résultat. Alors pensé à quelque chose commeInformix: UPDATE avec SELECT - syntaxe?
UPDATE summary_table st
SET st.screen_on=newScreenOnValue
st.active_screen_on=st.active_screen_on-(st.screen_on-newScreenOnValue) --old-value minus thedifference
FROM (
SUB-SELECT with rowid, newScreenOnValue ... JOIN ... WHERE....
) nv
WHERE (st.rowid=nv.rowid)
Je sais que je peux mettre à jour la première et la seconde valeur directement, en réexécutant la même requête. Mais mon problème est que les coûts de la sous-sélection semblent assez élevés et que, par conséquent, vous voulez éviter une double mise à jour resp. double-course de la même requête.
Le SELECT
ci-dessus est juste une manière informelle d'écrire ce que je pense que je voudrais obtenir. Je sais que le st
ne fonctionne pas, mais je l'ai laissé ici pour une meilleure compréhension. Lorsque j'essaie l'instruction ci-dessus, je récupère toujours une SyntaxError à la position FROM
.
Je n'ai pas pensé à ce genre de style. Merci, je vais essayer (même si j'ai trouvé une autre solution). – LeO
Cela a-t-il fonctionné? –
Pour être honnête: je n'ai pas essayé, mais la syntaxe semble très, très prometteuse. Par conséquent, je vais accepter la réponse. Je n'ai pas pensé à une variation de tuple ... – LeO