Updating multiple values No registration horny site
If you want to return the value before you updated it without using a seperate select (which unless you lock the table could return a different value than is updated) then you can use a mysql variable like this:update some_table set col = col 1 where key = 'some_key_value' and @value := col The @value := col will always evaluate to true and will store the col value before the update in the @value variable. Additional information on My SQL correlated subqueries is at UPDATE can apparently be used to implement a semaphore (pardon my pseudocode):while TRUE The code above waits until the semaphore is "cleared" (value = 0) and then "sets" it (value = 1).You could then do select @value;in order to see what the value was before you updated it My SQL uses Watcom (Oracle) syntax for UPDATE, so it's possible to write something like:update Table1 t1 join Table2 t2 on t1. When done, you "clear" the semaphore by UPDATE table SET value = 0 WHERE name = 'name' The assumption is that the UPDATE is "atomic" in that no concurrent access by another process can occur between testing and setting the value field.
If you set a column to the value it currently has, My SQL notices this and does not update it. Records not matching the equijoin from table2 are marked with null. test=# create table foo (id int, val int); CREATE TABLE Zeit: 0,837 ms test=*# insert into foo values (1,1); INSERT 0 1 Zeit: 0,434 ms test=*# insert into foo values (2,2); INSERT 0 1 Zeit: 0,298 ms test=*# update foo set val = case when id=1 then 10 when id=2 then 20 end; UPDATE 2 Zeit: 0,424 ms test=*# select * from foo; id | val ---- ----- 1 | 10 2 | 20 (2 Zeilen) Is this okay for you?Andreas -- Really, I'm not out to destroy Microsoft.when a row of a subset is lost/deleted/moved away from it, the whole subset will need to be reordered.This can be done similarily : SET @pos=0; UPDATE busstops SET pos = ( SELECT @pos := @pos 1 ) WHERE route = 1 ORDER BY pos ASCChris H (chansel0049) I experienced a weird issue converting from 4 to 5.