从具有多个条目的另一个表更新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的主要内容,如果未能解决你的问题,请参考以下文章

根据MySQL中另一列分组的另一列的顺序更新列

如何从 PostgreSQL 中的另一个表中更新具有随机 id 的表

通过 DBVIS SQL 指挥官从 MySQL 中的另一个表更新一个表

MySQL 从具有重复引用条目的联合表中选择唯一记录

无法从 ViewPager 中的另一个片段刷新/更新片段中的列表视图

MySQL,一次查询更新多个表