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
我正在处理 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