我正在尝试将两个表合并到一个表中。使用下表的示例,我需要将表B的Purchase_Date合并到表A的空白Purchase_Date中。表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
答案 0 :(得分:1)
您可以使用 static void LongRunningMethod()
{
try
{
//fetch something from external period and maybe exception happens.
Thread.sleep(100000);
}
catch(Exception ex)
{
//log exception..
LongRunningMethod();
}
}
update
和子查询来获取join
日期:
max
答案 1 :(得分:0)
对于表B中的最近或最大日期,SQL SERVER&中有一个非常有用的排名函数。 ORACLE,以下:
WITH GreatestDate AS(
SELECT Purchase_Date, Email,ROW_NUMBER() OVER(PARTITION BY Email ORDER BY Purchase_Date DESC) AS rownum
FROM B
)
SELECT * FROM GreatestDate WHERE rownum=1
然后合并到表A;
很可惜,mysql不支持那些排名功能。我有同样的问题,在讨论中提出了一个想法。