결과 "user_id"가 DESCending 순서로 Location 테이블의 첫 번째 레코드에 해당하는 것으로 예상됩니다. 하지만 첫 번째 레코드의 "user_id"가 오름차순 또는 ID 순서로 나타납니다.Order By가 예상대로 작동하지 않는 쿼리 MySQL
SELECT Device.name, Location.user_id
FROM locations Location
LEFT JOIN devices Device
ON Device.id = Location.device_id
WHERE Device.id IN (491)
GROUP BY Location.device_id
ORDER BY Location.location_datetime DESC
누구나 알아? 개선하는 방법?
감사합니다. 이 보장되지 않습니다
이SELECT
devices.name,
(select locations.user_id
from locations
where locations.device_id = devices.id
order by locations.location_datetime desc
limit 1)
FROM
devices
WHERE
device.id = 491
첫 번째 또는 마지막 레코드를 얻을 수 집계되지 열이 group by
을 사용할 수 없습니다
귀하의 기대치가 잘못되었습니다. 그 이유를 설명하는 링크가 있습니다 : http://dev.mysql.com/doc/refman/5.6/en/group-by-extensions.html. 특히 당신은이 비트를 읽어야한다 :'서버는 각 그룹으로부터 자유롭게 값을 선택할 수 있기 때문에, 같은 값이 아니면 다른 값을 사용할 수 없다. ' –
왜'Location.device_id'로 그룹화하고'Device .name, Location.user_id'? 대신'ORDER BY user_id'가 아닌 이유는 무엇입니까? 무엇을하려고하는지 설명해 주시겠습니까? –
감사 마크 - 봐요! 나는 그만큼 짐작했다. – iss42