如果我想使用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。
如何在单个查询中实现此目的?
答案 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,所以你只有一个值。