我正在尝试update
view
表,但只是第一个结果。
我不能使用rowid
- 不在view
表上工作。
有没有办法只更新第一个row
?正如我所说的rowid
解决方案无法运作。
select
查询示例:
select addr
from addrView
where (tl = '7' and tr = '2')
返回4 results
,但在使用update
:
update addrView
set home='current'
where (tl = '7' and tr = '2')
我仍然希望升级第一行。
答案 0 :(得分:3)
ROWID
是数据库中每行的唯一标识符。
ROWNUM
是结果集中每一行的唯一标识符。
您应该使用ROWNUM
版本,但是您需要ORDER BY
来强制执行排序顺序,否则您将无法保证查询返回的“第一”行是什么你可能正在更新另一行。
update addrView
set home='current'
where (tl, tr) = (
select tl, tr
from (select tl, tr
from addrView
where (tl = '7' and tr = '2')
order by col_1
, col_2
, col_3 etc.
) result_set
where rownum = 1);
但是,如果您不关心查询返回的第一行中的数据,那么您只能使用rownum = 1
。
update addrView
set home = 'current'
where (tl = '7' and tr = '2')
and rownum = 1;