SQL:仅返回第一次出现的情况
我很少使用 SQL,并且在我的存档中找不到任何类似的内容,所以我问这个简单的查询问题:我需要一个查询,其中返回 personID 并且仅返回第一个 seenTime
记录:
seenID | personID | seenTime
108 3 13:34
109 2 13:56
110 3 14:22
111 3 14:31
112 4 15:04
113 2 15:52
想要的结果:
personID | seenTime
3 13:34
2 13:56
4 15:04
这就是我所做的&失败:
SELECT t.attendanceID, t.seenPersonID, t.seenTime
(SELECT ROW_NUMBER() OVER (PARTITION BY seenID ORDER BY seenID) AS RowNo,
seenID,
seenPersonID,
seenTime
FROM personAttendances) t
WHERE t.RowNo=1
PS:注意 SQL CE 4
I seldomly use SQL and I cannot find anything similar in my archive so I'm asking this simple query question: I need a query which one returns personID and only the first seenTime
Records:
seenID | personID | seenTime
108 3 13:34
109 2 13:56
110 3 14:22
111 3 14:31
112 4 15:04
113 2 15:52
Wanted result:
personID | seenTime
3 13:34
2 13:56
4 15:04
That's what I did & failed:
SELECT t.attendanceID, t.seenPersonID, t.seenTime
(SELECT ROW_NUMBER() OVER (PARTITION BY seenID ORDER BY seenID) AS RowNo,
seenID,
seenPersonID,
seenTime
FROM personAttendances) t
WHERE t.RowNo=1
P.S: Notice SQL CE 4
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您的 sawTime 随着 sawID 的增加而增加:
更新另一种情况:
如果情况并非如此,并且您确实想要与最小 sawID 相对应的 sawTime(假设 sawID 是唯一的):
If your seenTime increases as seenID increases:
Update for another case:
If this is not the case, and you really want the seenTime that corresponds with the minimum seenID (assuming seenID is unique):
你把事情搞得太困难了:
You're making it way too difficult:
对于 PostgreSQL 有 区别于
for PostgreSQL there is DISTINCT ON
您需要按查看时间而不是按查看 ID 排序:
You need to order by seen time not by seen id:
将其添加到您的 SQL 中:
Add this to your SQL: