UPDATE Tnm_Lookup SET
P_C = 'C'
where Tnm_Lookup_ID in (select top (355) Tnm_Lookup_ID from Tnm_Lookup where
Tnm_Lookup_ID = Tnm_Lookup_ID order by Tnm_Lookup_ID DESC);
我不明白爲什麼這個聲明以前工作,現在它不會再更新我的表。任何人都可以給我一些見解,爲什麼這不起作用?Sql語句洞察力
UPDATE Tnm_Lookup SET
P_C = 'C'
where Tnm_Lookup_ID in (select top (355) Tnm_Lookup_ID from Tnm_Lookup where
Tnm_Lookup_ID = Tnm_Lookup_ID order by Tnm_Lookup_ID DESC);
我不明白爲什麼這個聲明以前工作,現在它不會再更新我的表。任何人都可以給我一些見解,爲什麼這不起作用?Sql語句洞察力
從你的第一份工作,它看起來你只是想更新P_C
如果是null
。在這種情況下,請使用P_C is null
。空值永遠不會等於(=)包含另一個空值的任何值。你必須使用is null
。
UPDATE Tnm_Lookup
SET P_C = 'C'
where Tnm_Lookup_ID in (
select top (355) Tnm_Lookup_ID
from Tnm_Lookup
where P_C is NULL
order by Tnm_Lookup_ID DESC)
如果僅在頂部355行整個表的降序排列搜索Tnm_Lookup_ID
,那麼如果Tnm_Lookup
有很多行,你可能會錯過一個你想要的。 where P_C is null
有幫助,因爲您只返回P_C
尚未更新的行。
儘管如此,除非您確定永遠不會有超過355行的數據等待更新,否則將搜索範圍限制爲固定值是有風險的。
爲什麼355?如果只是爲了提高效率,那麼如果它會錯過案例,就不值得加快搜索速度。
這是你想要的嗎?
UPDATE Tnm_Lookup SET P_C = 'C'
where P_C is NULL
如果我猜錯了,那麼你應該編輯的問題來解釋top (355)
。
這是否會返回任何記錄?
select top (355) Tnm_Lookup_ID
from Tnm_Lookup
where P_C = NULL
order by Tnm_Lookup_ID DESC
它不是我在帖子中有錯誤的查詢。我更新了。現在這個工作我永遠不會改變表中的任何東西。 – user2516641
真的,你在* real *查詢中有「where Tnm_Lookup_ID = Tnm_Lookup_ID」嗎? – Paparazzi
User251 ..如果回答應該給狗仔隊信用。他指出,子查詢沒有返回任何行來更新。 –
是否有'P_C = NULL'的記錄?如果你自己運行子查詢,它是否會返回任何記錄? –
通過「不工作」,你的意思是它什麼也不做,或者SQL Server報告錯誤?如果這是一個錯誤,錯誤是什麼? –