Vet att jag läst hur man gör detta men hittar inte lösningen nånstans nu.
Tabellen log innehåller flera poster för varje user_id, jag vill hämta den med högst l.time men vet inte hur.
Nedanstående fråga hämtar den först påträffade raden i log där u.id = l.user_id, dvs den där time är lägst.
SELECT
u.username, u.id, l.page, l.query, l.time
FROM
users u
INNER JOIN
log l
ON
u.id = l.user_id
WHERE
u.online > '2004-08-04 13:54:43'
GROUP BY
u.username, u.id
ORDER BY
u.username
SELECT
u.username, u.id, l.page, l.query, l.time
FROM
users u
INNER JOIN
log l
ON
u.id = l.user_id
WHERE l.time = (select max(time) from log
where log.user_id = l.user_id)
and
u.online > '2004-08-04 13:54:43'
Frågan ovan ser ut att göra precis det som jag vill, men något (som jag inte hittar) måste vara fel i den. MySql hänger sig eller nåt (tar all CPU i några minuter, inget händer).
Ingen som kan se något fel? Har kollat igenom alla fältnamn och så men hittar inget fel. Det är svårt när man inte får något felmeddelande.
Några tips om hur man felsöker en sån här fråga? Det enda jag kunde komma var att köra explain på den, men det säger mig inte så mycket. (Det funkar i alla fall, alltid något).
+-------+--------+---------------+---------+---------+------------+------+---------------------------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+--------+---------------+---------+---------+------------+------+---------------------------------+
| l1 | ALL | NULL | NULL | NULL | NULL | 6962 | Using temporary; Using filesort |
| l2 | ALL | NULL | NULL | NULL | NULL | 6962 | Using where |
| u | eq_ref | PRIMARY | PRIMARY | 4 | l1.user_id | 1 | Using where |
+-------+--------+---------------+---------+---------+------------+------+---------------------------------+
3 rows in set (0.00 sec)
Har fortfarande inte fått ordning på den här SQL-satsen. Samma problem fortfarande, MySql "hänger" sig i några minuter. Det tycks vara något med tabellen users i alla fall, den går inte att komma åt från PhpMyAdmin efter att man kört frågan, däremot går det att komma åt log.
Jag fattar ingenting.
261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25