【发布时间】:2015-02-22 01:23:33
【问题描述】:
假设我这样做:
select idx from table where number = 1;
并且这个选择返回10行(例如),我想将这10行的idx列从0更新为9。我该怎么做?
更新: 这是一个查询
/ orderID / lineID / q / idx /
/ 1 / 1 / 1 / 0 /
/ 1 / 2 / 1 / 1 /
/ 1 / 3 / 1 / 2 /
/ 2 / 4 / 1 / null /
/ 2 / 5 / 1 / null /
/ 2 / 6 / 1 / null /
/ 3 / 7 / 1 / null /
/ 3 / 8 / 1 / null /
我想替换 idx 的空值如下:
/ orderID / lineID / q / idx /
/ 1 / 1 / 1 / 0 /
/ 1 / 2 / 1 / 1 /
/ 1 / 3 / 1 / 2 /
/ 2 / 4 / 1 / 0 /
/ 2 / 5 / 1 / 1 /
/ 2 / 6 / 1 / 2 /
/ 3 / 7 / 1 / 0 /
/ 3 / 8 / 1 / 1 /
【问题讨论】:
-
迭代什么?问题正文暗示您只需要一个简单的
UPDATEDML 语句。 -
最好的方法是使用Windowing Function。在 Sql Server 中,它是一个
Row_Number() OVER (PARTITION BY ...)投影。不幸的是,MySql 不支持窗口函数,尽管它们自 2003 年以来一直是 ansi sql 标准的一部分。 -
您是要在选择时计算
idx,还是要实际更新表格?
标签: mysql