2015-10-05 91 views
1

在Microsoft SQL Server 2008 R2中,訂單'VERIFIED'或有時'COMPLETED''COMPLETED'意味着圖像被髮送到訂單,'VERIFIED'意味着高科技「驗證」這些圖像爲患者正確的)。SQL從選擇和替換

我想標記這些研究'READ'這將保持服務器上的圖像的訂單,但從醫生和放射科技看到的名單,以便他們的名單沒有那麼混亂。

現在,我要進入一張桌子,每次只能有一張CTRL + V + DOWN ARROW,因爲有成千上萬的人需要花費很長時間。 我是CTRL + VStatus表中的表格從'COMPLETED''VERIFIED''READ'

SELECT  StudyUID, StudyDate, StudyDesc, PatName, Status, StoragePath 
FROM  Studies 
WHERE  (Status = N'VERIFIED') 

只是我的查詢來查看錶。 我試圖搜索帖子,但替換或插入命令,我很害怕嘗試,因爲我知道,一旦你改變了SQL中的東西沒有撤消。

Status是列數據,我需要在質量發生變化,我想這列下,替換數據是'VERIFIED''READ'。這是我迄今爲止所擁有的。

SELECT  StudyUID, StudyDate, Accession, StudyDesc, PatName, Status, StoragePath 
FROM   Studies 
SELECT Replace(Status, 'VERIFIED', 'READ') 
WHERE  (Status = N'VERIFIED') 
+0

您對撤消的關注是有效的。這就是您希望備份表或其他備份模式的確切原因。我喜歡由觸發器親自填寫的歷史記錄表。如果你想看到所有的變化,這很容易,如果你需要恢復一個不好的更新,你會有數據。 – UnhandledExcepSean

+0

當您決定哪個答案最能解決您的問題時,您需要點擊您希望顯示爲已接受答案旁邊的複選標記。 – logixologist

回答

3

你需要的是一個UPDATE聲明。

這應該爲你做它:

UPDATE Studies 
SET Status = 'READ' 
WHERE Status = 'VERIFIED' 

另外,在能夠「撤銷」方面,有兩種方法可以做到這一點。

一,您可以使用BEGIN TRANSACTION,然後您所做的任何更改都將被提交到數據庫,直到您運行COMMIT TRANSACTION

二,創建一個新的數據庫並複製表中的數據以備份到新數據庫。 (我假設你不能做一個備份/整個數據庫的恢復)

+0

哇...只是哇,首先我沒有想到如此快速的迴應。其次,這很好,你很棒,非常感謝你。 –

+0

@GrahamBrandt很高興能幫到你! –

+0

@GrahamBrandt接受答案的FYI幫助有類似問題的未來用戶 –

0
Update Studies Set Status = 'Read' 
where status = 'VERIFIED' 

我會跑Select * from Studies where Status = 'VERIFIED'第一,並保存記錄,關閉擅長,所以你的情況下,有一個備份出錯。

+0

爲什麼要使用excel而不是臨時表?或者一個新的數據庫? –

+0

如果您使用臨時表,它將在會話結束後消失。如果你願意的話,你可以把它放在一張新桌子上。我只是喜歡excel。這真是個人選擇。我喜歡掩蓋自己的屁股並保留一份我更新或刪除的內容。 – franburr

+0

我想我應該更清楚我的術語。我的意思是用名爲'Studies_TEMP'的相同模式創建一個新表,並將所有數據插入到該表中。 –

1

@graham,你是正確的,一旦你改變了SQL你不能真的很容易地回去改變它。

它看起來像你想實現的是將所有statuscompletedverifiedRead。這可以通過UPDATE聲明來實現。

以下是你需要能夠實現這一目標的SQL語句:

UPDATE Studies 
SET Status = 'READ' 
WHERE Status in ('VERIFIED', 'COMPLETED') 

上面的語句一定要謹慎使用。如果您確定要將整個數據庫中的每個實例都更改爲READ,那麼以上就是您所需要的。

如果你想看到你要你做之前更新什麼,你總是可以這樣來做:

SELECT * FROM Studies 
    WHERE Status in ('VERIFIED', 'COMPLETED') 

如果你有一個數據庫管理員可以備份將是首選數據庫所以如果你犯了一個錯誤,你將能夠從中恢復過來。

上一個關於COMMIT的回覆中的註釋與您要求的內容無關。這意味着如果你正在進行一系列更新,如果失敗了,你應該能夠回滾並且不做任何更新。在你的情況下,你只是害怕在數據庫中進行更新。除非您備份數據庫,否則您正在進行的更新確實是不可逆轉的。我希望這可以幫助你!

+0

神聖的你真棒!非常感謝! –

+1

只要您知道正在使用的集合的大小,即使只執行一次更新,使用事務也會提供一些價值。例如,如果您希望修改300行,然後SSMS說「有300萬行受到影響」,那麼您可以確定自己做錯了什麼,並且想要回滾。也就是說,如果有任何不確定性,那麼首先應該用select語句進行測試。 – CactusCake