我试图在表(在oracle中)中添加一个number类型的列,奇数行的值为0,偶数行的值为1

我试图在表(在oracle中)中添加一个number类型的列,奇数行的值为0,偶数行的值为1,oracle,Oracle,我试图在表(在oracle中)中添加一个数字类型的列,奇数行的值为0,偶数行的值为1,当mod(rownum,2)=0,然后1 else 0结束时,更新集=case SELECT t.*, 1 - MOD( ROWNUM, 2 ) AS odd_even FROM ( SELECT * FROM your_table ORDER BY col1 -- ... ) 例如:-update tblMaster set flag=mod(rownum,2)=0时的情况

我试图在表(在oracle中)中添加一个数字类型的列,奇数行的值为0,偶数行的值为1,当mod(rownum,2)=0,然后1 else 0结束时,更新集=case
SELECT t.*,
       1 - MOD( ROWNUM, 2 ) AS odd_even
FROM   (
  SELECT *
  FROM   your_table
  ORDER BY col1 -- ...
)

例如:-update tblMaster set flag=mod(rownum,2)=0时的情况,然后1 else 0 end

表不自行排序。如何识别行的“编号”?一旦你明白了这一点,你可能会得到你的答案。例如,表中可能有一个自动递增字段。那么,你的奇数和偶数将只是该字段上的mod 2计算。这假设事实没有证据:-)为什么按col1排序,而不是按col1 nulls first排序,或者按col1 desc排序?急什么?为什么不等到OP澄清呢?因为澄清问题不会实质性地改变方法论。您对表格进行排序,然后在排序后,使用行号的模数2。OP可以指定他们想要的任何顺序,但如果你想学究化,那么我会在OP更新问题时更新答案。此外,你可能会注意到,我在order by之后添加了
--…
,以指示你可以继续/修改您想要的顺序。