我有一个名为 logs
的表。
logs 有几列,其中两列称为 user_id
,一个带符号的整数,和 timestamp
,这是一个时间戳。
日志表中每个 user_id 可以有多个时间戳。
我想将此数据传输到一个名为 users
的表中,该表有多个列,其中两列称为 user_id
和 last_date
.
我需要做的是为每个 user_id 填充用户表的 last_date
列,您猜对了,日志表的最后一个 timestamp
。
我知道如何从表中插入选择,但我不知道如何获取不同 user_id 及其时间戳的列表,并按最后一个时间戳过滤掉。
例如
SELECT DISTINCT (user_id),timestamp FROM logs GROUP BY timestamp DESC
最佳答案
首先,使用group by
时不需要distinct
。其次,您想按 user_id
进行聚合。第三,你需要一个timestamp
的聚合函数:
SELECT user_id, max(timestamp)
FROM `log`
GROUP BY user_id
ORDER BY max(timestamp) desc;
我不确定是否需要最终的order by
,但它符合问题中的查询。
这假设“最后一个时间戳”表示最大的时间戳。如果不是这种情况,请使用示例数据编辑您的问题。
关于Mysql:将半不同的条目插入另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328085/