从具有多个条目的另一个表更新MYSQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从具有多个条目的另一个表更新MYSQL相关的知识,希望对你有一定的参考价值。
我已经看到了一些有用的答案,关于使用MAX()子查询根据时间戳更新来自不同表的多个值的表值。
例如Update another table based on latest record
我想知道这与首先执行ALTER并依赖表中的顺序来简化UPDATE相比。像这样的东西:
ALTER TABLE `table_with_multiple_data` ORDER BY `timestamp` DESC;
UPDATE `table_with_single_data` as `t1`
LEFT JOIN `table_with_multiple_data` AS `t2`
ON `t1`.`id`=`t2`.`t1id`
SET `t1`.`value` = `t2`.`value`;
(为伪代码道歉,但我希望你能得到我所要求的)
两者对我来说都是一样的,但是没有足够大的数据集可以看出速度上的任何差异。
谢谢!!
答案
您通常会使用相关子查询:
UPDATE table_with_single_data t1
SET t1.value = (select t2.value
from table_with_multiple_data t2
where t2.t1id = t1.id
order by t2.timestamp desc
limit 1
);
如果你的方法恰好工作,那就是偶然。即使mysql尊重表的排序,这种排序也无法在join
操作中存活。更不用说当有多个匹配的行时,不能保证*分配* *。
以上是关于从具有多个条目的另一个表更新MYSQL的主要内容,如果未能解决你的问题,请参考以下文章
如何从 PostgreSQL 中的另一个表中更新具有随机 id 的表
通过 DBVIS SQL 指挥官从 MySQL 中的另一个表更新一个表