2013-03-10 96 views
1
Update table1 
set column1 = 'abc', column2 = 25 
where column3 IN ('John','Kate','Tim') 

列3包含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 

我想更新只打上行

我在微軟的Access特別感興趣(!)! - 但也很好奇這是如何在Sql Server中完成的,以防它有所不同。謝謝!

+0

在SQL Server 2005 +,一個CTE和ROW_NUMBER通話可能能夠使用,但你仍然需要知道什麼決定了行的「firstness」。我不知道如何在MS Access中解決這個問題。 – 2013-03-11 00:07:03

回答

3

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) 
相關問題