编号表列

时间:2012-08-13 09:41:28

标签: sql

我有一个包含两列的表格:

  1. 国家
  2. 订单查看
  3. Country列已填充。所以我需要按以下方式填写OrderView列:

    Country        OrderView
    ------------------------
    United States     1
    Afghanistan       2
    Aland Islands     3
    Albania           4
    

    依此按字母顺序排列(美国必须先行)。

    我知道如何在linq2sql中执行此操作,但我遇到了SQL问题。你能救我吗?

1 个答案:

答案 0 :(得分:4)

如果问题是针对SQL Server的,您可以使用caserow_number

update C
set OrderView = case
                  when Country = 'United States' then 1
                  when Country > 'United States' then rn
                  else rn + 1
                end
from (
      select OrderView,
             Country,
             row_number() over(order by Country) rn
      from YourTable
     ) as C

SE-Data