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

Column3은 John이 두 번 (두 개의 연관된 행/레코드), 마찬가지로 Kate 세 번째와 Tim을 두 번 포함합니다. 업데이트가 John, 첫 번째 행 Kate 및 첫 번째 행만 Tim의 첫 번째 행에만 영향을 미치도록 쿼리를 조정하려면 어떻게해야합니까?조건과 일치하는 첫 번째 행을 업데이트하십시오.

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 액세스에서 특히 관심이 있어요 (!) : 참고로

, 여기 표입니다! 또한 Sql Server가 다른 경우에 어떻게 수행되는지 궁금합니다. 고맙습니다!

+0

SQL Server 2005 이상에서는 CTE와 ROW_NUMBER 호출을 사용할 수 있지만 행의 "우선 순위"를 결정해야 할 필요가 있습니다. 나는 이것이 MS Access에서 어떻게 해결 될 수 있는지 전혀 모른다. –

답변

3

SQL Server 솔루션 -이 작업 (또는 일부 고유 한 열 집합)을 수행하려면 고유 ID 열이 있어야합니다.

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) 
관련 문제