我將使用示例表。帶CASE語句的SQL更新
tblAnimal:
---------------------------------
|Animal | Colour | Gender |
---------------------------------
|Dog | | |
---------------------------------
tblDescription:
-------------------------------
| Animal | ID | Description |
-------------------------------
| Dog | 1 | Male |
-------------------------------
| Dog | 92 | White |
-------------------------------
所以我想,這樣的顏色和性別被填充更新tblAnimal。
我使用的代碼
UPDATE tblAnimal
SET Colour = CASE WHEN tblDescription.ID = 92 THEN tblDescription.Description END,
Gender = CASE WHEN tblDescription.ID = 1 THEN tblDescription.Description END
FROM tblDescription INNER JOIN tblAnimal
ON tblDescription.Animal = tblAnimal.Animal
但它無法正常工作。 tblAnimal中的兩列保持爲NULL。看起來像SQL Server只檢查tblDescription中的第一行。
我該如何編寫此UPDATE語句,以便顏色和性別都是tblDescription中的內容?
編輯
謝謝大家對您的解決方案!是的,表需要進行標準化,但這只是嚴格的例子,以配合我對UPDATE語句的問題。
再次感謝大家。
可能我不明白這個問題。我的答案假設了表之間的一對一關係。 @ rida-benhammane的答案很可能是正確的答案。 –
*** @ go_55699 ***,這是[*** SQL小提琴***](http://sqlfiddle.com/#!6/579a1/1/2),表明這種方法確實有效。 – Linger