gpt4 book ai didi

MySQL根据列的最高值返回不同的行

转载 作者:行者123 更新时间:2023-11-29 23:15:55 25 4
gpt4 key购买 nike

所以我在 MySQL (MariaDB) 中有 2 个表。一个具有每行的所有唯一数据,另一个具有第一个表唯一数据的版本历史记录。 2、GeoID 之间只有一个键。

具有唯一 ID 和 GeoID 的表 (t1)

ID , GeoID , ColumnA , ColumnB

此表 (t2) 具有版本历史记录。

ID , VersionID , GeoID , TerrainID , Action

所以我在 t2 上执行 LEFT JOIN,其中 GeoID 在两个表中都匹配并且操作 = 4。问题是,因为 t2 是版本表,所以它可以返回 GeoID 匹配的多行,显示所有版本。我需要 t2 中与 t1 连接的数据的最新版本,并且从 t1 中我只需要 ColumnA 中为 0 的行

让我们得到一些值

     t1
ID | GeoID | ColumnA | ColumnB
1 | 1000 | 0 | 42
2 | 4387 | 3 | 432
3 | 9573 | 0 | NULL

t2
ID | VersionID | GeoID | TerrainID | Action
1 | 1 | 1000 | 221 | 4
2 | 2 | 1000 | 313 | 2
3 | 1 | 4387 | 541 | 4
4 | 1 | 9573 | 329 | 4
5 | 3 | 1000 | 323 | 4
6 | 2 | 9573 | 423 | 1

现在,我需要返回的是 GeoID 上的 JOINed 值、来自 t2 的关联 TerrainID 以及来自 t2 的值,其中版本是该大地水准面行的 MAX。

所以它应该看起来像这样,列上方的表格表示数据的来源。

       t1        t2        t2
GeoID | TerrainID | Version
1000 | 323 | 3
9573 | 423 | 2

最佳答案

对 t2 表的 GROUPed 版本执行 LEFT OUTER JOIN 应该可以解决问题:

SELECT t1.GeoID, t2_grouped.VersionID, t2_grouped.TerrainID
FROM t1
LEFT OUTER JOIN (SELECT GeoID, TerrainID, MAX(VersionID) AS VersionID FROM t2 GROUP BY GeoID, TerrainID) t2_grouped
ON t2_grouped.GeoId = t1.GeoID

WHERE t1.ColumnA = 0

关于MySQL根据列的最高值返回不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com