MySQL更新表基于另一个表中的id

时间:2014-10-08 17:44:53

标签: mysql database

这就是我试过的

update site
set value_id = 4464551
where (select id from base
where name = 'myName' and
discriminator = 'abc' and 
system_id = 001)

我想要的

  • 更新trget站点中的value_id,其中id =(内部选择语句)

我得到了什么
- 它更新了网站中的所有行

问题
- 如何获得内部select语句返回的一个id?

2 个答案:

答案 0 :(得分:2)

以下查询应该有效。

UPDATE site
SET value_id = 4464551
WHERE site.id = (
    SELECT id 
    FROM base
    WHERE name  'myName' AND 
        discriminator = 'abc' AND 
        system_id = 001
)

或者,如果您希望更新多行:

UPDATE site
SET value_id = 4464551
WHERE site.id IN (
    SELECT id 
    FROM base
    WHERE name  'myName' AND 
        discriminator = 'abc' AND 
        system_id = 001
)

答案 1 :(得分:0)

您也可以在不使用内部sql语句的情况下获得所需内容,例如:

update site, base
set site.value_id = 4464551
where 
base.name = 'myName' and
base.discriminator = 'abc' and 
base.system_id = 001 and
site.id = base.id