我有来自3个不同数据库的3个表,在这些表上我应用了内部联接来获取数据。 说我有db1.tab1,db2.tab2,db3.tab3。所以我的查询是:
select a.tran_cap_dt_tm, b.lang, c.email
from db1.tab1 a
inner join db2.tab2 on a.id = b.id
inner join db3.tab3 on b.id = c.id;
这给了我这个
tran_captr_dt_tm lang email
2019-07-01T10:26:13.000+0800 en_us test@test.commm
2019-07-10T10:26:13.000+0800 en_us test@test.commm
2019-07-22T10:26:13.000+0800 en_us test@test.commm
2019-07-01T10:26:13.000+0800 en_us tgarden@gmail.com
2019-07-10T10:26:13.000+0800 en_us tgarden@gmail.com
2019-07-24T10:26:13.000+0800 en_us tgarden@gmail.com
2019-07-01T10:26:13.000+0800 en_us jkrl@gmail.com
2019-07-10T10:26:13.000+0800 en_us jkrl@gmail.com
2019-07-27T10:26:13.000+0800 en_us jkrl@gmail.com
但这不是我想要的。我需要计算第一笔交易和最后一笔交易之间的持续时间(以天为单位)。像这样:
duration_in_days lang email
22 en_us test@test.commm
24 en_us tgarden@gmail.com
27 en_us jkrl@gmail.com
我正在使用mysql 5.7
答案 0 :(得分:1)
SELECT DATEDIFF(DATE_ADD(MAX(a.tran_captr_dt_tm),INTERVAL 1 DAY),MIN(a.tran_captr_dt_tm)) as duration_in_days, b.lang, c.email
FROM db1.tab1 a
INNER JOIN db2.tab2 on a.id = b.id
INNER JOIN db3.tab3 on b.id = c.id;
GROUP BY c.email