如何根据另一个表中的匹配数据在SQL中的一个表中更新?

时间:2015-03-16 13:11:58

标签: mysql sql

我发现了几个类似措辞的问题,但没有一个问题涉及我的具体问题。

如何使用在两个未链接表之间运行的条件执行UPDATE?

例如

TABLE_I
ID, Placed, junk, junk, junk

TABLE_II
ID, Category, Placed, Note, junk, junk...

如果条件在TABLE_II

WHERE Category=9 AND Note=@testvalue

应该发生UPDATE,其中TABLE_II中的值与TABLE_I中的值匹配

 UPDATE TABLE_I SET Placed=@testvalue WHERE

..假设符合上述条件的当前TABLE_I.Placed=Table_II.Placed

这样的步入式调节甚至可以在SQL中使用吗?或者它是否需要在查询之外进行编码以逐步测试?

2 个答案:

答案 0 :(得分:1)

SQL

  update t1 SET t1.Placed=@testvalue
    from Table_1 t1 
    join Table_2 t2 on t1.placed = t2.placed 
    where  t2.Category=9 AND t2.Note=@testvalue

您必须在更新声明中使用join

Mysql

答案是肯定的,你可以

尝试就好了

 update Table_1 t1
    join Table_2 t2 on t1.placed = t2.placed 
    where  t2.Category=9 AND t2.Note=@testvalue
    SET t1.Placed=@testvalue

编辑:

对于常规更新加入:

   UPDATE TABLEA a 
   JOIN TABLEB b ON a.join_colA = b.join_colB  
   SET a.columnToUpdate = [something]

答案 1 :(得分:0)

你可以使用table_i上的insert上的触发器以及更新第一个表的过程来执行此类操作。 不确定如何在MySQL或SQL-server中做到这一点(为什么有2个标签?这是什么?),但它可能与在PostgreSQL中执行此操作没有太大区别。 Google快速搜索给了我http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html

虽然最好的解决方案可能是实际链接未链接的表。