更新Table2连接的Table3中的Table1,但表2可能引用多个table3条目

时间:2016-02-10 15:58:39

标签: mysql join

如果我想使用table1的值更新table3字段,加入table2,我会这样做:

UPDATE t1
  SET t1.code = t3.code
FROM table1 AS t1
INNER JOIN table2 AS t2
ON t1.id = t2.id
INNER JOIN table3 AS t3
ON t2.id = t3.id_from_t2;

但是在这种特殊情况下,table3可能有很多t2.id = t3.id_from_t2个条目,我希望t3.code中的t3.active值较低(是一个数字){{1}是1。

如何在单个查询中实现此目的?

1 个答案:

答案 0 :(得分:1)

您可以加入t3中经过修改的选择,如下所示:

UPDATE table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id
INNER JOIN (select tt3.id_from_t2 , min(tt3.code) as code
            from table3 AS tt3
            where tt3.active = 1
            group by tt3.id_from_t2) t3
ON t2.id = t3.id_from_t2
SET t1.code = t3.code;

那样t3子查询只包含id_from_t2和min代码,其中active = 1,所以你只有一个值。