我有这个查询
SELECT orden.id,
array_to_string(array_agg(observaciones.fecha_hora),'<br>') as observaciones
FROM orden
LEFT JOIN observacion observaciones ON observaciones.orden_id = orden.id
GROUP BY orden.id
它正在返回:
orden.id = 5878
observaciones
2012-03-15 01:39:11
2012-03-15 01:40:28
2012-03-15 01:40:42
2012-03-15 09:09:08
2012-03-15 09:11:10
2012-03-15 01:18:34
2012-03-15 01:19:27
2012-03-15 09:17:01
2012-03-15 09:17:36
2012-03-15 03:16:58
2012-03-15 01:21:01
2012-03-15 03:17:06
2012-03-15 03:17:26
2012-03-15 01:27:33
2012-03-15 03:18:05
2012-03-15 03:24:56
2012-03-15 03:49:24
2012-03-15 01:27:43
2012-03-15 01:38:30
2012-03-15 06:30:13
问题是,如何按DESC顺序获取这些日期时间 我不能做一个子查询,因为我正在优化一个旧查询,我真的需要一个JOIN。 我正在使用postgresql。
答案 0 :(得分:0)
我对PostgreSQL一无所知,但在SQL中你可以把它扔进临时表,然后命令临时表。
SELECT orden.id
, array_to_string(array_agg(observaciones.fecha_hora),'<br>') as observaciones
INTO #orden
FROM orden
LEFT JOIN observacion observaciones
ON observaciones.orden_id = orden.id
GROUP BY orden.id
SELECT id
, observaciones
FROM #orden
ORDER BY observaciones
DROP TABLE #orden
答案 1 :(得分:0)
如果您只想按日期desc对结果行进行排序,只需添加ORDER BY“field”DESC:
SELECT orden.id,
array_to_string(array_agg(observaciones.fecha_hora),'<br>') as observaciones
FROM orden
LEFT JOIN observacion observaciones ON observaciones.orden_id = orden.id
GROUP BY orden.id
ORDER BY observaciones.fecha_hora DESC
答案 2 :(得分:0)
最后我这样做了......
SELECT
orden.id,
array_to_string(array_agg(observaciones.fecha_hora),'<br>') as observaciones
FROM orden
LEFT JOIN (
SELECT orden_id, fecha_hora FROM observacion ORDER BY fecha_hora DESC
) as observaciones ON observaciones.orden_id = orden.id
GROUP BY orden.id
感谢所有..