更新具有需要连接的外来的表中的值,优雅的解决方案是什么(高效)

时间:2017-01-21 19:23:43

标签: sql

我有两张桌子X和Y:

  • X具有列ID(主键),名称
  • Y有一个引用ID列的X的外键。

我只能从输入中获取与X相关的Name值。

我需要在Y

中更新Y值

我不想两次打到数据库;即:通过匹配名称值获取X中的ID值并返回此值以通过WHERE更新Y中使用

如何编写此SQL查询,是否有可以编写的复杂查询?

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题,但是:

update Y
set ...
where Y.X_ID in (select X.ID from X where X.Name = '...');

这将更新那些Y X_ID行引用X行且匹配Name值的行。

答案 1 :(得分:0)

在单个查询中更新的一种方法是

     UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1

FROM
    Y AS Table_A
    INNER JOIN X AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'