두 테이블 : Users
및 Files
이 있습니다.MySQL의 오른쪽 외부 조인
사용자 테이블에는 10 개의 행이 있고 파일 테이블에는 사용자 ID (UserID
)의 열이있는 450 개의 행이 있습니다.
마지막으로 다운로드 한 모든 사람과 파일의 목록을 쿼리하고 싶습니다. 파일 테이블의 유형은 DateTime
인 LastDownloadTime
필드입니다.
이것은 내 SQL 쿼리입니다.
Select
Users.Name , Files.Name
FROM Users
RIGHT OUTER JOIN Files on Users.ID = (
Select Files.UserID
FROM Files
ORDER BY LastDownloadTime DESC Limit 1
)
위의 쿼리는 모든 사용자와 파일을 반환합니다. 이것에 대한 올바른 질문은 무엇이되어야합니까?
SELECT Users.Name , Files.Name
FROM Users
RIGHT OUTER JOIN
(SELECT Files.Name
FROM Files
INNER JOIN
(SELECT TOP 1 Files.UserID ,Max(LastDownloadTime) as LastDownloadTime
FROM Files
ORDER BY LastDownloadTime DESC,Files.UserID ) as f2
ON Files.UserID = f2.UserID AND Files.LastDownloadTime = f2.LastDownloadTime
) as f ON Users.ID = f.UserID
시도해 보셨습니까? Users.Name, Files.Name에서 사용자를 선택합니다. 오른쪽 외부 조인 Users.ID = Users.UserID ORDER BY Files.LastDownloadTime DESC 제한 1) – B4NZ41