我想从表中返回所有列,但仅针对“唯一”或“不同”用户。
我想从表中获取所有不同的用户,但返回所有列。
我将按时间戳对表格进行排序,以便获取每个不同用户的“第一个”条目。
任何想法?
答案 0 :(得分:2)
您应该发布表格定义,但应该可以使用GROUP BY
。
SELECT col1, col2, col3, MIN(timestamp)
FROM users
GROUP BY
col1, col2, col3
如果您的任何其他列也包含可变数据(因为它们实际上应该在规范化表中),您必须选择要在其上使用的聚合函数。
SELECT col1, col2, col3, MAX(var1), AVG(var2), ..., MIN(timestamp)
FROM users
GROUP BY
col1, col2, col3
答案 1 :(得分:1)
select * from table group by userid order by time;
不要忘记重命名用户ID和时间以匹配您的列名
答案 2 :(得分:0)
您是否尝试过使用GROUP BY,即
SELECT * FROM users GROUP BY id ORDER BY ...
一般来说它应该有效,但你没有提到任何结构..
答案 3 :(得分:0)
你真的不需要分组。您想要的是选择表格中的每条记录,这些记录没有针对具有较小(或更高)时间戳的同一用户的其他记录
select * from my_table t1
where not exists (select 1 from my_table t2
where t1.user = t2.user
and t1.time < t2.time)
请务必在user
和time
列上添加索引
答案 4 :(得分:0)
select *
from table a,
(select min(timestampfield) as ts, userid as userid
from table
group by userid) b
where a.userid = b.userid and a.ts = b.ts