我有一個名爲mytable的表,有許多列。
我想要做的是更新該列表中的2個列相匹配的列,但只匹配符合條件的前400條記錄。SQL Server 2008 - 僅更新表中的特定行數
實施例:
列
Name Ref ID Text
當REF = 555和id = 7我想更新調用 '匹配' 字文本的列。
我知道會有大約800條符合條件的記錄,但我只想更新前400條。
任何人都可以幫忙嗎?
Regards, 請問。
我有一個名爲mytable的表,有許多列。
我想要做的是更新該列表中的2個列相匹配的列,但只匹配符合條件的前400條記錄。SQL Server 2008 - 僅更新表中的特定行數
實施例:
列
Name Ref ID Text
當REF = 555和id = 7我想更新調用 '匹配' 字文本的列。
我知道會有大約800條符合條件的記錄,但我只想更新前400條。
任何人都可以幫忙嗎?
Regards, 請問。
在CTE
一個簡單的方法是使用ROW_NUMBER
,如:
WITH CTE AS
(
SELECT rn = ROW_NUMBER() OVER (ORDER BY ref, id),
ref, id, text
FROM MyTable
WHERE ref = 555 AND id = 7
)
UPDATE CTE SET text = 'Matched'
WHERE RN <= 400
您可以使用一個CTE來選擇TOP 400
行有一個ref=555
和id=7
:
;with cte as
(
select top 400 ref, id, text
from yourtable
where ref = 555
and id = 7
order by ref, id
)
update cte
set text = 'Matched';
我已經給觸發更新,如果你需要在第二行插入變化更新關鍵字插入
CREATE TRIGGER T
AFTER UPDATE ON MYTABLE
FOR EACH ROW BEGIN
WHERE (SELEC COUNT(*) FROM MYTABLE WHERE ref = 555 and id = 7) <= 400
BEGIN
UPDATE MYTABLE
SET TEXT = 'MATCHED'
WHERE REF = NEW.REF AND ID = NEW.ID;
END;
你可以加入你想自己來更新表:偉大的工作
UPDATE MyTable
SET Text = 'Matched'
FROM MyTable
INNER JOIN (
SELECT TOP 400 ID FROM MyTable WHERE ref = 555 AND ID = 7 ORDER BY ID
) AS InnerMyTable ON MyTable.ID = InnerMyTable.ID
假設'ID'爲主鍵,如果'ref'和'id'是一個複合主鍵或者它們不是唯一的呢? – 2013-04-04 11:56:24
那麼,如果是這樣的話,那麼有必要指定前400個是什麼,所以是的,我推測這個ID在該表中是唯一的。 – DrCopyPaste 2013-04-04 12:05:53
添,非常感謝你和其他人的幫助。非常感激。 – Will 2013-04-04 12:17:43