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

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

作为参考,这里是表1:

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

我只想更新标有 (!)

我对Ms Access特别感兴趣!- 但也很好奇这是如何在 Sql Server 中完成的,以防万一。谢谢!

4

1 回答 1

5

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) 
于 2013-05-23T18:33:38.160 回答