gpt4 book ai didi

mysql - 如何为每个成员选择最近的输入?

转载 作者:可可西里 更新时间:2023-11-01 07:05:27 25 4
gpt4 key购买 nike

假设我有一个 MySQL 表:

╔══════╦═════╦═════════╦═════════╗║ time ║ mid ║ field_1 ║ field_2 ║╠══════╬═════╬═════════╬═════════╣║  100 ║   1 ║      32 ║      54 ║║  100 ║   2 ║       0 ║      34 ║║  100 ║   3 ║      44 ║      99 ║║  200 ║   1 ║       0 ║      45 ║║  200 ║   2 ║       0 ║      45 ║║  200 ║   3 ║       4 ║      59 ║║  200 ║   4 ║      45 ║      45 ║╚══════╩═════╩═════════╩═════════╝

时间是 UNIX 时间戳。 mid 是成员(member)id。 field_1 由成员提供。 field_2 自动填充。

我希望为所有成员选择具有最近的非零 field_1 的行。所以查询将导致:

╔══════╦═════╦═════════╦═════════╗║ time ║ mid ║ field_1 ║ field_2 ║╠══════╬═════╬═════════╬═════════╣║  100 ║   1 ║      32 ║      54 ║║  200 ║   3 ║       4 ║      59 ║║  200 ║   4 ║      45 ║      45 ║╚══════╩═════╩═════════╩═════════╝

我想到的唯一解决方案似乎不太优雅:

SELECT *FROM (    SELECT *    FROM t1    WHERE field_1 > 0    ORDER BY time DESC) AS aGROUP BY mid

有没有更好的办法?

最佳答案

这里的想法是创建一个子查询,它获取每个 mid 的最大 time 并将其连接到表本身。

SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT mid, MAX(time) maxV
FROM tableName
WHERE field_1 > 0
GROUP BY mid
) b ON a.mid = b.mid and
a.time = b.maxV

SQLFiddle Demo

关于mysql - 如何为每个成员选择最近的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089284/

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