我将使用示例表。带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