Analicemos bien el caso:
Este código:
Código sql:
Ver originalSELECT users.username, MAX(photos.id) AS id
FROM users INNER JOIN photos
ON photos.user_id = users.id
WHERE users.STATUS = 0 AND photos.STATUS = 0
GROUP BY users.id
ORDER BY MAX(photos.id) DESC
LIMIT 0,6;
Esto te devuelve todos registros de usuarios y el ID de la foto de cada uno que sea el mayor para cada usuario.id. Si lo que deseas es que esas photo.id se ordenen,
no lo puedes hacer en la misma sentencia, porque debes convertir la columna devuelta por la consulta en una columna real y
no en el resultado de una función agregada. Eso se logra poniendo el resultado de esta consulta dentro de otra, como
subconsulta:
Código sql:
Ver originalSELECT username, id
FROM (
SELECT users.username, MAX(photos.id) AS id
FROM users INNER JOIN photos
ON photos.user_id = users.id
WHERE users.STATUS = 0 AND photos.STATUS = 0
GROUP BY users.id ) Tabla1
ORDER BY id DESC
LIMIT 0,6;
De esta forma, la consulta se transforma en una tabla en memoria, y de esa tabla se toma el resultado de la consulta principal. Como la consulta principal opera sobre la tabla de memoria, ya toma datos prefiltrados y es muchísimo más rápida.
Pruébalo.