【发布时间】:2015-01-12 08:57:41
【问题描述】:
我有一个复杂的(*)SQL SELECT 语句,它返回我需要更新的行
如何仅更新SELECT 语句返回的行?
我看到的所有关于使用 SELECT 语句更新行的帖子都谈到了使用字段匹配的另一个表的 INNER JOIN (How do I UPDATE from a SELECT in SQL Server?)
我的说法是
SELECT * FROM table1 I
INNER JOIN
(SELECT *
FROM (
SELECT INTNO,EFFDTE,
ROW_NUMBER() OVER(PARTITION BY INTNO,EFFDTE ORDER BY EFFDTE DESC) rn
FROM table2 WHERE REFID = 8888 AND EFFDTE IS NOT NULL AND INTNO <> 1234567
) a
WHERE rn = 1) X
ON X.INTNO = I.MEMBNO AND I.ENDDTE = DATEADD(DD,-1,X.EFFDTE)
WHERE I.ENDRSN = 'abc'
【问题讨论】:
标签: sql sql-server sql-server-2008