用于根据外键更新表的SQL语句

时间:2013-12-13 00:31:22

标签: sql

UPDATE animals
       SET dog = dog + 1
       from animal_names, color
       WHERE animal_names.name = "Buddy" and color.name = "Yellow";

基本上,我想在桌子上添加1只狗“动物”。但是,动物使用外键“animal_names”和“color”。但是,我想更新动物而不使用这些外键的ID,而是希望使用字符串而不是它们的id。

2 个答案:

答案 0 :(得分:0)

您只需在“更新”的from部分指定关系即可。例如:

UPDATE animals
SET dog = dog + 1
FROM animals 
  INNER JOIN animal_names 
    ON animals.nameID = animal_names.nameID
  INNER JOIN color 
    ON animals.colorID = color.colorID
WHERE 
  animal_names.name = "Buddy"
   AND
  color.name = "Yellow" ;

(假设,对于此示例,您的主键与上面的命名整数一样。)

答案 1 :(得分:0)

我无法解决你的餐桌结构 - 我不太清楚你是怎么在动物桌上养狗的,所以我会猜测一下。

UPDATE animals
       SET dog = dog + (
        select count(*) 
       from animal_names inner join color on (whatever)
       WHERE animal_names.name = "Buddy" and
       color.name = "Yellow" and 
       animal_names.animaltype='dog'
      )

可能不太对,但可以帮助你。