1
MyTable
:
id | name | phone | status1 | status2 | finalStatus
------------------------------------------------------
001 | Jack | 123456 | good | good | X
002 | Jack | 123456 | bad | good | X
003 | Jack | 123456 | bad | bad | X
004 | Other| 000000 | good | good | X
鑑於[name]
和[phone]
,如果[status1]
和[status2]
都不錯,然後更新[finalStatus]
很好。否則,請將其他人更新爲壞人。
因此,鑑於Name=jack
和phone=123456
,結果表我想應該是如下
id | name | phone | status1 | status2 | finalStatus
-----------------------------------------------------
001 | Jack | 123456 | good | good | good
002 | Jack | 123456 | bad | good | bad
003 | Jack | 123456 | bad | bad | bad
004 | Other| 000000 | good | good | X
我做了一些研究,我發現我可以使用情況下,當語句來做到這一點。我嘗試了下面的代碼,但它不起作用。
UPDATE [myTable]
SET finalStatus = (CASE
WHEN (status1 = 'Good' and status2 = 'Good')
THEN 'Good'
ELSE 'Bad'
END)
WHERE name = 'Jack' and phone = '123456'
更新:
我的意思是「不工作」上面是該行並沒有真正更新。然而,我只是想出了爲什麼它不適合我。這是非常愚蠢的,因爲我使用了錯誤的表名(名稱非常相似)。
然而,我曾嘗試以下代碼
UPDATE [myTable]
SET finalStatus = (CASE
WHEN (status1 = 'Good' and status2 = 'Good' and name = 'Jack' and phone = '123456')
THEN 'Good'
ELSE 'Bad'
END)
在上表中被設定爲「良好」,這是正確的第一行。但是,所有其他行都設置爲壞。上面的代碼有什麼問題?我認爲它和上面的第一個代碼一樣。
在此先感謝。
當您執行該語句時會發生什麼? – 2014-10-28 21:26:39
如果您使用的是**區分大小寫**排序規則,那麼表格中包含「good」(全部小寫),並且您在檢查「Good」(使用大寫'G')可能會導致問題....如果你檢查'WHEN(status1 ='good'AND status2 ='good')' - 這會改變什麼嗎?它是否適用於這些檢查? – 2014-10-28 21:28:40
「我嘗試了下面的代碼,但它不起作用」,你能解釋一下「不起作用」的意思嗎? – Lamak 2014-10-28 21:30:06