我有一张名为' 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解决方案。
答案 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);