当我内部加入第二个表时,我只想加入一行。标准是获取级别列中具有最高整数的行。我在想这样的事情:
SELECT *
FROM file_repo
INNER JOIN
( SELECT
MAX(files.level)
FROM
files
) ON file_repo.id = files.repo_id
对于file_repo中的每一行,我将从level列中具有最高值的文件中获取一行。
答案 0 :(得分:5)
SELECT fr.*, fm.MaxLevel
FROM file_repo fr
INNER JOIN (
SELECT repo_id, MAX(level) as MaxLevel
FROM files
GROUP BY repo_id
) fm ON fr.id = fm.repo_id
答案 1 :(得分:5)
SELECT *
FROM file_repo fr
JOIN files f
ON f.id =
(
SELECT id
FROM files fi
WHERE fi.repo_id = fr.id
ORDER BY
repo_id DESC, level DESC, id DESC
LIMIT 1
)
在files (repo_id, level, id)
上创建一个索引,以便快速工作。
这将正确处理level
上的重复项。