我有一个查询我们可以用行数替换列的所有值吗?
select name,name_order from name_table where dept_id=XXX;
和结果集中是
+------------+--------+
| name_order | name |
+------------+--------+
| 0 | One |
| 1 | Two |
| 2 | Three |
| 3 | four |
| 6 | five |
| 9 | six |
+------------+--------+
我必须更新用于的dept_id的name_order,以这样的方式使得它们从0和 递增开始(针对的dept_id只)
注:name_order是不是索引
的出落得应该像
+------------+--------+
| name_order | name |
+------------+--------+
| 0 | One |
| 1 | Two |
| 2 | Three |
| 3 | four |
| 4 | five |
| 5 | six |
+------------+--------+
我试图分析功能ROWNUMBER(),它并没有帮助提前
update name_table set name_order = (
ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY name_order)-1
)
where dept_id=XXX order by name_order
感谢 -R
这会更接近OP的问题:http://www.sqlfiddle.com/#!4/f02c1/2 – Passerby 2013-05-09 05:45:15
@Passerby是的,我没有不考虑dept_id.I更新我的答案。 – Gentlezerg 2013-05-09 05:58:30