【发布时间】:2020-11-27 06:39:32
【问题描述】:
我正在尝试获取具有事件的每个日期(来自 table_1)之前和之后的第一个时间戳(在 table_2 中)。 有时是前后几秒钟,有时是几小时或几天。
我的 table_1 看起来像:
|-------|------------------|-------------|
| id | date | events |
|-------|------------------|-------------|
| 4 |2020-04-11 3:44:20| call |
| 2 |2020-04-21 7:59:06| appointment |
| 1 |2020-04-17 1:14:32| appointment |
| 3 |2020-04-10 3:41:17| feedback |
|-------|------------------|-------------|
Table_2 看起来像:
|------------------|-------------|
| date | events |
|------------------|-------------|
|2020-04-13 3:07:13| feedback |
|------------------|-------------|
|2020-04-12 5:42:04| feedback |
|------------------|-------------|
|2020-04-18 2:52:11| call |
|------------------|-------------|
|2020-04-21 8:14:27| appointment |
|------------------|-------------|
这就是我正在寻找的结果:
|----------|------------------|---------------------|------------------|
| id | date | previous_date | next_date |
|----------|------------------|---------------------|------------------|
| 4 |2020-04-11 3:44:20| 2020-04-12 5:42:04 |2020-04-12 5:42:04|
|----------|------------------|---------------------|------------------|
| 2 |2020-04-21 7:59:06| 2020-04-18 2:52:11 |2020-04-21 8:14:27|
|----------|------------------|---------------------|------------------|
| 1 |2020-04-17 1:14:32| 2020-04-13 3:07:13 |2020-04-18 2:52:11|
|----------|------------------|---------------------|------------------|
| 3 |2020-04-13 3:02:17| 2020-04-12 5:42:04 |2020-04-13 3:07:13|
|----------|------------------|---------------------|------------------|
任何帮助将不胜感激。当然,我的桌子比这个大得多。
这是我正在玩的,但没有成功:
SELECT
t1.id,
t1.date,
(
SELECT MIN(t1.date)
FROM table_1 AS t1
WHERE t1.date > t2.date
AND t1.events = t2.events
) AS NextDate
FROM table_2 t2
【问题讨论】:
标签: mysql sql datetime timestamp subquery