我使用sql-server如何进行查询 更新或选择第3行的项目 喜欢
update Persons set Fname='name',Lname='lname' game="hmm" where line =3
如果没有选项可以用来更新数据库中的一行 如果知道我的DataBase中有2个相同/完全相同的2行选项
没有主键
答案 0 :(得分:2)
假设感兴趣的行是下面显示的第三行(这是您给出的示例数据):
Fname Lname game hobby
asaf sh football computer
yaron ed none goldSmith
asaf sh football computer <--- This is the row you want to update
您可以运行以下UPDATE语句来更改我指示的行。这最好看的不是&#34;第三行&#34;但是作为fname当前的行#asaf&#39;,lname是&#39; sh&#39 ;,游戏是&#39;足球&#39;,爱好是&#39;计算机&#39; ;
with sub as(
select p.*, row_number() over (partition by fname, lname, game, hobby
order by fname, lname, game, hobby ) as rn
from persons p)
update sub
set fname = 'new_fname', lname = 'new_lname', game = 'new_game'
where rn = 1
and fname = 'asaf'
and lname = 'sh'
and game = 'football'
and hobby = 'computer';
小提琴示例: http://sqlfiddle.com/#!6/83fb0/1/0
以上内容将更新包含您要定位的值的2行中的一行。请记住,没有&#34; order&#34;关于桌子上的行。此外,您应该添加一个主键,以便将来可以唯一地更新特定行,而不必依赖row_number()