获取按最近时间过滤的行mysql
问题描述:
我有一个复杂查询的问题,我不知道如何编写它。 我有下表:获取按最近时间过滤的行mysql
+---------------+-----------+----------+--------------------------+
|id_incidencia | id_alarma | idaction | concat(fecha, ' ', hora) |
+---------------+-----------+----------+--------------------------+
| 18488 | 551 | 1 | 2016-08-29 14:55:47 |
| 18491 | 551 | 7 | 2016-08-29 15:02:47 |
| 18493 | 551 | 6 | 2016-08-29 15:37:39 |
| 18495 | 551 | 7 | 2016-08-29 15:41:27 |
| 19263 | 551 | 6 | 2016-09-16 15:17:27 |
| 19429 | 5151 | 5 | 2016-09-19 09:01:17 |
| 19447 | 5151 | 5 | 2016-09-19 09:25:23 |
| 19500 | 5151 | 5 | 2016-09-20 09:38:11 |
| 19532 | 5151 | 5 | 2016-09-23 15:02:50 |
| 19526 | 5151 | 6 | 2016-09-23 11:23:27 |
| 19528 | 5151 | 6 | 2016-09-23 11:28:01 |
| 19527 | 5151 | 7 | 2016-09-23 11:25:18 |
| 19529 | 5151 | 7 | 2016-09-23 11:28:08 |
+---------------+-----------+----------+--------------------------+
我想有从查询下一个结果:
idaction | id_alarma | datetime
---------+-----------+---------
7 | 551 | 2016-08-29 15:41:27
7 | 5151 | 2016-09-23 11:28:08
这意味着,我要为每个组id_alarma
的价值,我想最近一次的最后一行,它的值为idaction
。问题是,当我执行下一个查询时,idaction
中的值与日期时间字段不匹配。
,我提到的查询是:
SELECT a.id,
nia.idaction,
MAX(CONCAT(nia.fecha, ' ', nia.hora))
FROM nectar_incidencias_alarma nia
INNER JOIN alarmas a
ON a.id=nia.id_alarma
WHERE nia.idaction IN (6,7)
GROUP BY a.id
答
尝试此查询: -
select * from (
select * from (
SELECT a.id,
nia.idaction grp_is,
MAX(CONCAT(nia.fecha, ' ', nia.hora)) time_is
FROM nectar_incidencias_alarma nia
INNER JOIN alarmas a
ON a.id=nia.id_alarma
WHERE nia.idaction IN (6,7)
GROUP BY a.id
) tab1
order by tab1.time_is desc) tab2
group by tab2.grp_is
+0
它不起作用,它仍然为每个a.id值显示重复的行 – mp3man
答
要检索的idaction正确的值,你可以结合使用group_concat
与substring_index
。需要注意的是,你并不真的需要加入表alarmas,因为你有你在nectar_incidencias_alarma需要:
SELECT id_alarma,
SUBSTRING_INDEX(GROUP_CONCAT(idaction
ORDER BY CONCAT(fecha, ' ', hora) DESC), ',', 1)+0 id_action,
MAX(CONCAT(fecha, ' ', hora))
FROM nectar_incidencias_alarma
WHERE idaction IN (6,7)
GROUP BY id_alarma
我提的就是查询:SELECT a.id,nia.idaction,MAX (CONCAT(nia.fecha,'',nia.hora))FROM nectar_incidencias_alarma nia INNER JOIN报警a ON a.id = nia.id_alarma WHERE nia.idaction IN(6,7)GROUP BY a.id – mp3man
但是551 | 6比551 | 7更新!!!?! – Strawberry