我想看看我是否能在一個查詢完成以下情況:MySQL的 - 讓這一切一個查詢
我有多個列的表,然而,只有兩個是重要的:版本的groupId。 許多行可以共享相同的groupId值,版本列是需要排序的 的數字。
給出兩個groupId值,A和B,我想最後返回兩行。我想找到每個組A和B的最新版本號。
感謝您的幫助。很抱歉,如果這是相當明顯的,但我有困難
我想看看我是否能在一個查詢完成以下情況:MySQL的 - 讓這一切一個查詢
我有多個列的表,然而,只有兩個是重要的:版本的groupId。 許多行可以共享相同的groupId值,版本列是需要排序的 的數字。
給出兩個groupId值,A和B,我想最後返回兩行。我想找到每個組A和B的最新版本號。
感謝您的幫助。很抱歉,如果這是相當明顯的,但我有困難
我假設版本是一個整數
SELECT MAX(version), `group` FROM table WHERE `group` IN (A, B) GROUP BY `group`
像這樣的事情?
SELECT groupId, MAX(version) max_version
FROM YourTable
WHERE groupId IN ('A', 'B')
GROUP BY groupId;
所以我認爲groupId
實際上可以採取字符值一樣'A'
您沒有指定任何數據類型。只需改變這一點以適應您的需求。基本想法是,您只需篩選出您感興趣的那些值後,您GROUP BY
groupId
。然後你SELECT
MAX(version)
爲每個這些值。
試試下面
select p.id,p.groupid,p.version from tablename p
left join
(
select max(id) id1 from tablename
group by groupId
order by max(id) desc
) t on t.id1 = p.id
假設你在表
HA主鍵列ID!是的,我想這會做到這一點,我將無法去嘗試,直到後來上,但現在看起來很痛苦。謝謝。 – 2012-03-09 01:34:51