更新匹配条件的第一行
Posted
技术标签:
【中文标题】更新匹配条件的第一行【英文标题】: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 中解决这个问题。 【参考方案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)
【讨论】:
以上是关于更新匹配条件的第一行的主要内容,如果未能解决你的问题,请参考以下文章
Javascript / React - 获取匹配特定条件的数组中的第一项