Mysql 使用偏好和 GROUP BY 连接表

Mysql JOIN tables with preference and a GROUP BY

我正在处理 file/image 数据库。 我有一个 table 索引文件名并将它们附加到 'album'

FILES TABLE
file_id | file_name | album_id
1       | image x   |  2
2       | image y   |  2

第二个table存储文件的位置和各种大小

SOURCE TABLE
source_id | file_id | source_size | source_url
1         |  1      | original    | //... 
2         |  1      | thumbnail   | //... 
3         |  2      | original    | //... 
4         |  3      | original    | //... 

目前 'source_size' 列被列为文本(原始、缩略图、预览等)。

我正在努力查询 table 优先选择 source_size,同时仍在 return 搜索该专辑中的所有文件。

目前看起来是这样的:

SELECT 
f.*, s.*
FROM source s
INNER JOIN files f ON f.file_id=s.file_id 
WHERE f.album_id="2" 
GROUP BY s.file_id
ORDER BY FIND_IN_SET(s.source_size,"thumbnail, original") DESC

我希望它首先 return 缩略图格式文件的 source_id 但失败只是 return 找不到匹配的原始大小文件。

在以后的查询中,可能会优先考虑原件或预览。

这似乎暂时有效,但不确定是否正确...

    SELECT 
    f.*, fs*
    FROM files f
    INNER JOIN (SELECT s.* FROM file_source s ORDER BY FIND_IN_SET(s.source_size,"thumbnail, original") DESC) fs ON f.file_id=fs.file_id 
    WHERE f.album_id="2" 
    GROUP BY f.file_id
    ORDER BY f.file_id DESC