Mysql SQL根据另一列(时间戳)选择第一行和最后一行
您好,我正在尝试在表上选择某些元素。 这是我的桌子的样子 时间,UsrerId,数据。 现在我要做的是,对于同一个userid,我希望根据时间戳得到数据的第一个和最后一个值 例如:Mysql SQL根据另一列(时间戳)选择第一行和最后一行,mysql,sql,sql-server,hql,Mysql,Sql,Sql Server,Hql,您好,我正在尝试在表上选择某些元素。 这是我的桌子的样子 时间,UsrerId,数据。 现在我要做的是,对于同一个userid,我希望根据时间戳得到数据的第一个和最后一个值 例如: Time UserID Data 8 PM 1 200 9 PM 1 300 10 PM 1 100 8 PM 2 150 9 PM 2 250 10 PM 2 350 8 PM 3 100 所以我的结果应该是这样的: 8 PM 1 200 10 PM 1 100 8 PM 2 150 10
Time UserID Data
8 PM 1 200
9 PM 1 300
10 PM 1 100
8 PM 2 150
9 PM 2 250
10 PM 2 350
8 PM 3 100
所以我的结果应该是这样的:
8 PM 1 200
10 PM 1 100
8 PM 2 150
10 PM 2 350
8 PM 3 100
如果我正确理解了您的问题,您可以使用
max
和min
聚合将表本身连接起来:
select y.time, y.userid, y.data
from yourtable y
join (select userid, min(time) mintime, max(time) maxtime
from yourtable
group by userid
) t on y.userid = t.userid and y.time in (t.mintime, t.maxtime)
用户ID的最小和最大时间
,然后将结果连接回主表以获取其他信息。试试这个
select A.Time, A.UserID, A.Data from yourtable A
join
(
SELECT UserID, MIN(Time) AS Min_Time, MAX(Time) AS Max_Time
FROM yourtable
GROUP BY UserID
) B
ON a.UserID = B.UserID
and A.time in (B.Min_Time, B.Max_Time) -- (A.time =B.Min_Time or A.time =B.Max_Time)
根据时间戳,这将如何成为数据的第一个和最后一个值?你能看看问题中的注释吗?这不是我想要的,我认为这不正确。我想要的是有点不同。请看一下我做得对的修改后的问题now@realcoder--这应该能回答你当前的问题-它怎么不正确?如果你有不同的问题,也许你应该发布一个新的…我正在检查这个。让我用我拥有的扩展数据来完成这个查询,并将发布我需要的结果get@realcoder这并不意味着这是不正确的,仅仅因为你的问题不完整。我们的目标是得到这个想法,并尝试自己去实现它,而不是寻找确切的答案。好吧……很抱歉。我是stackoverflow的新手,所以不知道该做什么和不该做什么。。。无论如何谢谢示例:时间用户ID数据8 PM 1200 9 PM 1300 10 PM 1100 8 PM 2150 9 PM 2250 PM 2350 8 PM 3100所以我的结果应该是:8 PM 1200 10 PM 1100 8 PM 2150 10 PM 2350 8 PM 3100这是否更清楚?如此不同的用户ID,当同一用户ID有多条记录时,请删除第一条和最后一条记录按时间排序你能看看问题中的评论吗这不是我想要的
select A.Time, A.UserID, A.Data from yourtable A
join
(
SELECT UserID, MIN(Time) AS Min_Time, MAX(Time) AS Max_Time
FROM yourtable
GROUP BY UserID
) B
ON a.UserID = B.UserID
and A.time in (B.Min_Time, B.Max_Time) -- (A.time =B.Min_Time or A.time =B.Max_Time)