Vi un tipo similar de preguntas aquí, pero ninguna de ellas ayudó a mi situación.MySQL Group by ID y Latest Datetime
Tengo una tabla digamos prueba (usando MyISAM MySQL)
prueba tiene el siguiente esquema:
TID INT PRIMARY KEY AUTO_INCREMENT
TData varchar (data that i want to select)
TUserID INT (this will be joined with users table, same users can have many records here)
TViewedAt DATETIME (records each time user visits page, datetime format)
Ahora, cada vez que una página de prueba es visitada por usuario actualmente conectado, se añade registros a esta tabla se registra la identificación del usuario que visitó, algunos datos y la fecha y la hora que el usuario visitó con el TID se incrementa automáticamente cada vez.
Luego tengo una página de administración de back-end donde puedo ver qué página de prueba visitó el usuario, cuántas veces, datos y cuándo. Básicamente es una tabla con una lista de 20-25 últimas filas. My Query solo debe seleccionar un registro por datos. Los datos pueden ser los mismos para el usuario pero en diferentes momentos, pero solo quiero seleccionar un dato para cada usuario que sea el más reciente. Por lo tanto, si el usuario visitó la página de prueba 10 veces, 10 registros irán a la base de datos pero mostrarán solo 1 registro más reciente en la tabla. Si otro usuario visita la página 15 veces, muestra 1 registro para este segundo usuario, que es el último nuevamente, así que en total ahora tenemos 2 filas en la mesa. Tengo todo para trabajar pero GROUP BY por alguna razón y MAX (fecha) no me da la última fecha y hora para cada fecha.
aquí es mi consulta:
SELECT *
FROM Test
WHERE TUserID = 123
GROUP BY TData
ORDER BY TViewedAt
retornos 2 filas fuera de las cuales ninguna de esas filas son los últimos.
muchas gracias
sí, funciona, muchas gracias, muy simple y fácil – Giorgi
bienvenida, me complace ayudar –
¿hay alguna manera de hacerlo? eso es más eficiente, es decir, no requiere subconsultas? me estoy dando cuenta de que está matando mi servidor – Jason