我有两个表,我想每n行增加一个日期时间字段
jobs
| job_id | group_id | start_date | limit | delay |
+--------+----------+------------------+-------+--------+
| 1 | 1 | 2019-10-10 08:00 | 2 | 3600 |
| 2 | 1 | 2019-10-10 14:00 | 0 | 0 |
| 3 | 2 | 2019-10-10 14:00 | 1 | 1800 |
users
| user_id | group_id | user_name | row_num |
+---------+----------+------------+----------+
| xxx | 1 | Homer | 1 |
| xxx | 1 | Barney | 2 |
| xxx | 1 | Bart | 3 |
| xxx | 1 | Ned | 4 |
| xxx | 1 | Marge | 5 |
| xxx | 1 | Moe | 6 |
| xxx | 1 | Maggie | 7 |
| xxx | 2 | Lisa | 1 |
| xxx | 2 | Otto | 2 |
| xxx | 2 | Marge | 3 |结果应该是
| job_id | group_id | user_name | start_date |
+----------+----------+-----------+-------------------+
| 1 | 1 | Homer | 2019-10-10 08:00 |
| 1 | 1 | Barney | 2019-10-10 08:00 |
| 1 | 1 | Bart | 2019-10-10 09:00 |
| 1 | 1 | Ned | 2019-10-10 09:00 |
| 1 | 1 | Marge | 2019-10-10 10:00 |
| 1 | 1 | Moe | 2019-10-10 10:00 |
| ... | ... | ... | ... |
| 2 | 1 | Homer | 2019-10-10 14:00 |
| 2 | 1 | Barney | 2019-10-10 14:00 |
| 2 | 1 | Bart | 2019-10-10 14:00 |
| 2 | 1 | Ned | 2019-10-10 14:00 |
| 2 | 1 | Marge | 2019-10-10 14:00 |
| 2 | 1 | Moe | 2019-10-10 14:00 |
| ... | ... | ... | ... |
| 3 | 2 | Lisa | 2019-10-10 14:00 |
| 3 | 2 | Otto | 2019-10-10 14:30 |
| 3 | 2 | Marge | 2019-10-10 15:00 |
| ... | ... | ... | ... |为了实现这一点,我创建了一个php脚本,它提取数据,创建一个循环并将它们插入到一个表中。
我想知道您是否只能使用mysql查询来完成这个任务,以及我如何做到这一点。
谢谢
发布于 2019-10-25 11:36:16
以下是一个选择:
SELECT
j.job_id,
j.group_id,
u.user_name,
TIMESTAMPADD(HOUR, FLOOR((u.row_num-1) / 2), j.start_date) AS start_date
FROM jobs j
INNER JOIN users u
ON j.group_id = u.group_id
ORDER BY
j.job_id,
j.group_id,
u.row_num;这里的逻辑是,我们在开始日期增加一个小时,row_num每增加两个小时,从行号的第二步开始(即从3开始)。
https://stackoverflow.com/questions/58557696
复制相似问题