将虚拟数据添加到mySql Result

时间:2017-12-26 14:57:51

标签: mysql sql

我有一张名为' graph'字段id,日期,值。

此查询(dateStart和dateFinish由我定义):

AnimalFarm<Animal>

返回此结果:

SELECT id, date, value FROM graph WHERE date BETWEEN dateStart AND dateFinish

我需要复制每个ID的第一行和最后一行,日期值为dateStart和dateFinish,因此结果如下所示:

id     | date                   | value
id0    | 2017-10-01 00:01:23    | 13
id1    | 2017-11-01 00:06:03    | 10
...    | ...                    | ...
id0    | 2017-15-01 00:05:33    | 34
id1    | 2017-14-01 00:21:23    | 19

简而言之,我需要复制每个id的第一行和最后一行。

此要求的原因是我们正在使用外部库,其中唯一需要的参数是查询,因此我无法在查询后触摸结果,这就是我要求的原因。如果可能的话,我正在寻找一个纯粹的mySQL解决方案。

1 个答案:

答案 0 :(得分:0)

您可以使用union all

SELECT id, date, value
FROM graph
WHERE date BETWEEN v_dateStart AND v_dateFinish
UNION ALL
SELECT id, v_dateStart, value
FROM graph g
WHERE g.date = (SELECT MIN(g2.date) FROM graph g2 WHERE g2.id = g.id)
UNION ALL
SELECT id, v_dateEnd, value
FROM graph g
WHERE g.date = (SELECT MAX(g2.date) FROM graph g2 WHERE g2.id = g.id);