更新符合条件的第一行

时间:2013-03-10 23:08:24

标签: sql-server ms-access

Update table1
set column1 = 'abc', column2 = 25
where column3 IN ('John','Kate','Tim')

Column3包含John两次(两个相关的行/记录),类似地 - 它有Kate第三次和Tim两次。 如何调整查询,以便更新仅影响John的第一行,Kate的第一行和Tim的第一行?

作为参考,这里是table1:

column1 column2 column3
aa       2       John (!)
affd     24      John 
dfd      5       Tim (!)
ss       77      Kate (!)
s        4       Tim
s        1       Kate
sds      34      Kate

我只想更新标有(!)

的行

我对Access女士特别感兴趣! - 但也很好奇如何在Sql Server中完成它以防它不同。谢谢!

1 个答案:

答案 0 :(得分:4)

Sql Server解决方案 - 注意,您必须具有唯一的标识列才能使其工作(或一组唯一列)。

UPDATE table1 
SET    column1 = 'abc', 
       column2 = 25 
WHERE  id IN (SELECT id 
              FROM   (SELECT id, 
                             Row_number() 
                               OVER ( 
                                 ORDER BY rowyouwanttoorderby ) AS ROWNUM 
                      FROM   table1 
                      WHERE  column3 IN ( 'John', 'Kate', 'Tim' )) AS temp 
              WHERE  rownum = 1)