Ah, ya, ya veo lo que decís...pensaba que con ese order by conseguiría agrupar de manera que me cogiese siempre el mayor valor de del_time, pero ya veo que no es así, que lo que hace es darme el resultado ordenado...
En verdad yo lo que quiero es que, a partir de una tabla en la que suele haber varias filas con un mismo rid y distintos del_time, obtener el rid solo de aquellas filas cuyo mayor del_time (de entre todas las que comparten el rid) sea menor que el tiempo actual, y esa lista de rids utilizarla para borrar los elementos que tengan ese rid en otra tabla...
Vamos, que si yo tengo una tabla que tiene (entre otras cosas) lo siguiente:
rid | del_time |
cf5b1f86eb50f1f39835854119dc5c1c | 1297437046 |
cf5b1f86eb50f1f39835854119dc5c1c | 1297440385 |
050c168ddc6c20dba9612144c6807906 | 1297435430 |
050c168ddc6c20dba9612144c6807906 | 1297435430 |
y el timestamp actual es 1297438046, tendría que seleccionar (y borrar) las que tengan rid 050c168ddc6c20dba9612144c6807906, ya que en el caso del otro rid, 1297437046 si es menor que el timestamp, pero 1297440385 no...
Entonces, la que query que he escrito la tengo por ahora así (aplicando ya lo del delete de novlucker):
DELETE FROM web_reportes WHERE `rid` IN (SELECT rid FROM(SELECT rid, MAX(del_time) AS max_del_time FROM web_messages WHERE message_type = '3' AND rid != '0' GROUP BY rid)sub WHERE sub.max_del_time <= UNIX_TIMESTAMP())
¿Consideráis que así está bien?¿Se os ocurre alguna posible optimización?
Gracias por la ayuda