【问题标题】:Update first rows that match condition更新匹配条件的第一行
【发布时间】:2013-03-10 23:08:23
【问题描述】:
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

我只想更新标有 (!) 的行

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

【问题讨论】:

  • 在 SQL Server 2005+ 中,可能会使用 CTE 和 ROW_NUMBER 调用,尽管您仍然需要知道是什么决定了行的“第一性”。我不知道如何在 MS Access 中解决这个问题。

标签: sql-server ms-access


【解决方案1】:

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) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2018-01-17
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多