UPDATE ProjectInfo 
SET Sort=row_number() over (order by ProjectID)  
WHERE ProjectID in(1,2,3,4,5,6)

解决方案 »

  1.   

    sorry!
    ;with cte as
    (
        select ProjectID,sort,rid=row_number() over (order by ProjectID)
    )update ProjectInfo a
    set a.sort = b.rid
    from cte b
    where a.ProjectID = b.ProjectID
      

  2.   

    UPDATE ProjectInfo SET SORT=T.ID FROM (
    SELECT projectID,ROW_NUMBER() OVER(ORDER BY projectID) ID FROM ProjectInfo
    )T
    WHERE ProjectInfo.projectID=T.projectID
      

  3.   

    忘记告诉你了,我用是MYSQL - -
      

  4.   

    mysql的row_number函数实现 参考 http://outofmemory.cn/code-snippet/3355/mysql-row_number-function
      

  5.   

    update tableName, 
    (select (@rank:=@rank+1) rank, projectId from(
    select @rank:=0, projectId from tableName order by projectId) tmp) tmp2 
    set tableName.sort = tmp2.rank where tableName.projectId = tmp2.projectId
      

  6.   


    不行的报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select (@rank:=@rank+1) rank,ProjectId FROM(select @rank:=0,ProjectId from Proj' at line 1
      

  7.   

    update ProjectInfo v
    set Sort=(select count(*) from ProjectInfo where projectID<=v.projectID)
    where ProjectID in(1,2,3,4,5,6)