mysql - 如何使用替换某些唯一数据来暂时合并 2 个表

标签 mysql performance merge

我正在尝试将两个表合并为一个表。使用下表的示例,我需要将表 B 的购买日期合并到表 A 的空白购买日期中。表 A 具有与购买日期关联的电子邮件,并且在表 A 中该电子邮件是唯一的。然而,表 B 中有很多电子邮件地址,而且它们并不唯一。当我将两个表合并在一起时,我需要将表 B 中的最新或最大日期放入表 A 中。

出于性能原因,表 A 有约 33.5k 行,表 B 有约 550k 行。

Table A
Email           Purchase_Date
-----------     ---------------
test@test.ca    
test2@test.ca   
test3@test.ca

Table B
Email           Purchase_Date
-----------     ---------------
test@test.ca    2016-08-01 0:00:00
test@test.ca    2016-08-03 0:00:00
test2@test.ca   2016-08-13 0:00:00
test2@test.ca   2016-08-14 0:00:00
test2@test.ca   2016-08-15 0:00:00
test3@test.ca   2016-08-27 0:00:00

最佳答案

您可以使用带有 joinupdate 和子查询来获取 max 日期:

update tablea a
join (
   select email, max(purchase_date) purchase_date
   from tableb 
   group by email
) b on a.email = b.email
set a.purchase_date = b.purchase_date

关于mysql - 如何使用替换某些唯一数据来暂时合并 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39197557/

相关文章:

mysql - 合并同一数据库的两个版本: duplicate id errors

c# - MySQLX.GetSession异常: : 'Expected message id: 2. Received message id: 10'

mysql - 加入两个表,但仍然获得第一个表的完整数据

java - 经常使用但具有并发性的 HashMap

c# - 与序列化相比,使用 MarshalByRefObject 的开销有多大?

java - 按键连接两个 map

PHP:将完整数组与空数组合并还是先检查 isset()?

php - 使用 PHP 从 HTML 获取特定数据

php - Laravel: SQLSTATE HY000 2002 由于目标机器主动拒绝,无法建立连接

python - 为什么这两种代码在 Python 和 Cython 中存在巨大的性能差异?