我已经尝试过这个与MySQL不同的多个,我似乎无法使用任何东西...我有一个表是一个历史表。公寓可以在不同状态的同一建筑物中多次找到。我需要找到每个公寓的最新版本(ID为ORDER BY id最高的那个)
id building appartment_id status
208 1 2 2
209 1 3 2
210 1 4 2
211 1 5 2
212 1 6 2
213 1 7 2
214 1 2 1
215 1 2 3
但我该怎么做?! :S 我试过这个:
SELECT *, GROUP_CONCAT(appartment_id, building)
FROM `ib30_history`
group by appartment_id, building
order by id DESC
它似乎工作,但我不确定这是正确的方式,并使用输出的代码似乎使有趣的事情贯穿数据,所以我不确定它真的有效!
答案 0 :(得分:1)
SELECT yourtable.id, yourtable.building, yourtable.appartment_id, yourtable.status
FROM yourtable
INNER JOIN (
SELECT MAX(id) AS id
FROM yourtable
GROUP BY building, appartment_id
) AS child ON yourtable.id = child.id
答案 1 :(得分:0)
摆脱不同并使用类似的东西:
GROUP BY building,appartment_id
答案 2 :(得分:0)
您正在寻找的是GROUP BY
,MySQL的文档对如何使用它有很多了解。在我输入时,OP不包含查询,所以我不能给你一个例子......
答案 3 :(得分:0)
SELECT a.*
FROM table_name a
INNER JOIN
(SELECT MAX(id) as max_id
FROM table_name
GROUP BY appartment_id) b
ON (b.max_id = a.id)