我將更新系統,我想從數據庫獲取文件更新。爲每個名稱選擇最新記錄
請求應該給我的所有文件,但如果有幾行用相同的文件名,我想只有這與「版本」(號)最高值
所以文件名中的反應將是獨一無二的。
(實在不好意思,我不知道怎麼說了吧)
我將更新系統,我想從數據庫獲取文件更新。爲每個名稱選擇最新記錄
請求應該給我的所有文件,但如果有幾行用相同的文件名,我想只有這與「版本」(號)最高值
所以文件名中的反應將是獨一無二的。
(實在不好意思,我不知道怎麼說了吧)
如果FILE_VERSION只是爲了演示目的,不保持關係值,你可以這樣做:
select filename, max(file_version) as file_version
from your_table
group by filename;
否則,如果FILE_VERSION必須從同一行的文件名,那麼你可以這樣做:
select distinct a.filename, a.file_version
from your_table a
join (select filename, max(file_version) as file_version
from yourtable
group by filename) b
on b.filename = a.filename
and b.file_version = a.file_version
order by a.filename;
GROUP BY
會有性能比較的影響,如果表是很大的。這是更好地使用LIMIT 1
如果你只需要一個行
SELECT
file,
file_version
FROM
file_history
WHERE
file = 'filename'
AND file_version < 5
ORDER BY file_version DESC
LIMIT 1
你應該添加索引到file_version
列,使這個查詢優化。
我想獲得所有文件的最新版本(指定最小和最大版本) – TheChilliPL
好的,那麼JuveLeo1906的回答是正確的。 – wormi4ok
好的,我會檢查它 – TheChilliPL
它會與「where file_version <...」一起工作嗎? – TheChilliPL
當然,使用'min(file_version)'而不是'max(file_version)'。 – JuveLeo1906