内部通过仅获取最高整数行来连接单行

时间:2010-11-08 15:51:15

标签: mysql join inner-join

当我内部加入第二个表时,我只想加入一行。标准是获取级别列中具有最高整数的行。我在想这样的事情:

SELECT *
FROM file_repo
INNER JOIN
(   SELECT 
       MAX(files.level)
    FROM
       files
) ON file_repo.id = files.repo_id

对于file_repo中的每一行,我将从level列中具有最高值的文件中获取一行。

2 个答案:

答案 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上的重复项。