LINUX.ORG.RU

История изменений

Исправление Darth_Revan, (текущая версия) :

Ещё я должен отметить, что в общем случае то, который t1.store будет выбран, фактически определяется лишь тем, который физически лежит ближе к началу. В InnoDB это будет наименьшее значение в случае, если t1.store – это основной ключ, потому что clustered index.
В общем, для однозначности нужно написать так:

UPDATE t2 SET valid = valid + COALESCE((SELECT valid FROM t1 WHERE store = t2.id ORDER BY store LIMIT 1), 0);

Если желателен, наоборот, последний t1.store, тогда ORDER BY store DESC LIMIT 1.

Исходная версия Darth_Revan, :

Ещё я должен отметить, что в общем случае то, который t1.store будет выбран, фактически определяется лишь тем, который физически лежит ближе к началу. В InnoDB это будет наименьшее значение в случае, если t1.store – это основной ключ, потому что clustered index.
В общем, для однозначности нужно написать так:

UPDATE t2 SET valid = valid + COALESCE((SELECT valid FROM t1 WHERE store = t2.id ORDER BY store LIMIT 1), 0);

Если желателен, наоборот, последний t1.store, тогда ORDER BY store DESC.