2017-06-15 9 views
0

我更改我的數據庫(MySQL到SQL Server),現在我在 更新查詢中遇到問題。當我使用相同的數據在MySQL中更新時,它返回'0 受影響的行',我嘗試在SQL Server中執行相同的操作,但它返回1 受影響的行。在mysql中更新查詢在mssql中不一樣


UPDATE stud_details 
set stud_fname = 'SHERWIN' 
WHERE stud_lrn = 20170610000 

幫我有關查詢的SQL Server,當您更新相同的數據

+1

該聲明非常基本且完全符合標準。它更新了'stud_lrn = 20170610000'的所有ros。 'stud_lrn'的數據類型當然應該是整數類型,即'BIGINT'或'DECIMAL(n,0)'。嘗試'SELECT * FROM stud_details WHERE stud_lrn = 20170610000'查看哪些行符合條件。 –

+0

記錄是否存在於兩個數據庫中? – Peter

+0

@Thorsten當我嘗試查詢時,你說「stud_fname = SHERWN」,當我更新stud_fname並將其設置爲「SHERWIN」。它會返回1個受影響的行,即使值沒有改變,不像MySQL –

回答

0

SQL Server的告訴你1行受到影響,因爲1行被更新,將返回0。如果你想欺騙和有受影響的0行,而不是,你可以這樣來做:

set nocount on 

UPDATE stud_details 
set stud_fname = 'SHERWIN' 
WHERE stud_lrn = 20170610000 

set nocount off 

UPDATE stud_details 
set stud_fname = stud_fname 
WHERE 1=2 

你的第一個查詢,你不會看到行受到影響第二次查詢將有受影響的0行。

+0

它的工作原理。謝謝!但是,如果我設置了'nocount',返回值總是0.我使用返回值在我的應用中使用'if else condition' –