2012-03-01 53 views
0

我需要对选定的行进行更新,这些行应按存储日期的列进行排序。 我需要这样的顺序的原因是我想根据日期顺序升序值更新行。正在更新已选择的行

我很想在一个语句中得到它,如果可能的话,我需要在我的java代码中,所以我不想使用游标。

在此先感谢

+1

您使用的是什么RDBMS和版本? – 2012-03-01 20:44:09

+0

我正在使用Oracle 11g – xwhyz 2012-03-01 20:46:03

回答

0

你怎么能设置多个值的SET子句中的列?

+0

我可能不能 - 我只是想实现我所描述的并且这段代码是某种描述。我会编辑它,因为它可能会误导:) – xwhyz 2012-03-01 20:54:44

+0

请发布一些示例数据,如果你可以... – Teja 2012-03-01 20:56:15

+0

不downvoting,但请考虑在问题的意见,而不是将它们添加为答案。 – 2012-03-01 21:02:41

3

它看起来像甲骨文拥有ROW_NUMBER和分区,所以怎么是这样的:

UPDATE MyTable 
SET MyTable.Value = RowNum 
FROM MyTable 
    JOIN 
    (
     SELECT ID, 
      ROW_NUMBER() OVER (PARTITION BY UserName ORDER BY MyDate) AS RowNum 
     FROM MyTable AS InnerTable 
    ) AS Hierarchy 
     ON MyTable.ID = Hierarchy.ID 

我不得不做出了一些列来完成这项工作,因为你的例子似乎并没有给架构的足够。但是,一般来说,像这样的东西应该可以工作

+0

我得到错误周围SET teeest.order = RowNumb - “SQL命令未正确结束”。我试过RowNum以及RowNumb别名 – xwhyz 2012-03-02 07:35:34

+0

哈哈,哎呀。我编辑了我的答案。我从表中省略了子查询。你有没有复制那个错误? – 2012-03-02 13:49:23

+0

错误在命令行:2列:29 错误报告: SQL错误:ORA-00933:polecenie SQL niepoprawniezakończone 00933. 00000 - “SQL命令不能正确地结束” 是绕第一ROWNUM变量 – xwhyz 2012-03-05 07:37:53