我有一张名为logs
的表。
logs有几列,其中两列称为user_id
,一个有符号整数,timestamp
,这是一个时间戳。
日志表每个user_id可以包含多个时间戳。
我想将此数据转移到名为users
的表格中,该表格包含多个列,其中两列称为user_id
和last_date
。
我需要做的是为每个user_id填充用户表的last_date
列,您猜对了,日志表的最后timestamp
。
我知道如何从表中插入选择但我无法弄清楚如何获取不同user_id的列表及其时间戳,并按上一个时间戳过滤掉。
E.G。
SELECT DISTINCT (user_id), timestamp FROM logs GROUP BY timestamp DESC
答案 0 :(得分:2)
首先,使用distinct
时不需要group by
。其次,您希望按user_id
汇总。第三,您需要timestamp
的聚合函数:
SELECT user_id, max(timestamp)
FROM `log`
GROUP BY user_id
ORDER BY max(timestamp) desc;
我不确定是否需要最终order by
,但它符合问题中的查询。
这假定“last timestamp”表示最大时间戳。如果不是这种情况,请使用示例数据编辑您的问题。
答案 1 :(得分:1)
SELECT user_id, MAX(timestamp) as last_date FROM `logs` GROUP BY user_id;