如何更新select语句产生的列值



我试图从给定值中找到偶数或奇数,事情是我想更新E_and_o列,这导致选择语句。有人能帮我一下吗?

不知道我哪里做错了。

Create table EvenRodd(
Nrow INT,
E_and_O VARCHAR(15));

///Select statement//
Select nrow, E_and_O,
Case
When Mod(nrow, 2) != 0 then 'Odd'
When Mod(nrow, 2) = 0  then 'Even'
end
From EvenRodd;
//Update //////
Update evenrodd set e_and_o = (Select evenrodd.nrow,
Case
When Mod(evenrodd.nrow, 2) != 0 then 'Odd'
When Mod(evenrodd.nrow, 2) = 0  then 'Even'
end
From EvenRodd) WHERE e_and_o IS NULL; 
Update evenrodd set e_and_o = 
Case
When Mod(nrow, 2) != 0 then 'Odd'
When Mod(nrow, 2) = 0  then 'Even'
end

编辑:如果你想设置e_and_o作为计算列,而不是每次更新:

ALTER TABLE evenrodd DROP COLUMN e_and_o;
ALTER TABLE evenrodd ADD e_and_o AS  
Case
When Mod(nrow, 2) != 0 then 'Odd'
When Mod(nrow, 2) = 0  then 'Even'
end;

我敢打赌你从内部选择查询传递了太多的值。试试这样做:

/更新//////

Update evenrodd set e_and_o = (Select 
Case
When Mod(evenrodd.nrow, 2) != 0 then 'Odd'
When Mod(evenrodd.nrow, 2) = 0  then 'Even'
end
From EvenRodd) WHERE e_and_o IS NULL; 

最新更新