Может кто-нибудь сказать мне, каков должен быть результат в соответствии со стандартом (ссылка на правильную часть стандарта приветствуется)
> select * from t1;
+------+
| col1 |
+------+
| 9 |
| 8 |
| 10 |
+------+
> update t1
set col1 = col1 * 2
where col1 <= (select avg(col1) from t1);
Дело в том, обновляется ли последняя строка, поскольку, если строки обновляются по порядку, а среднее значение пересчитывается для каждой строки, оно будет удовлетворять условию или не обновляется, поскольку любые данные, измененные этим оператором будет доступен для чтения только после выполнения всего оператора?
EDIT
А как насчет этого дела?
> select * from t1;
+------+------+
| col1 | col2 |
+------+------+
| 9 | 1 |
| 8 | 2 |
| 10 | 2 |
+------+------+
> update t1 p1
set col1 = col1 * 2
where col1 <= (select avg(col1)
from t1
where col2=p1.col2);