例如,我有這個表:
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的那一行。
因此,所需的輸出需要是(對于其中一個人的ID):
。
seenID | personID | seenTime
------- ---------- ---------
110 3 14: 22
這種情況下的查詢方式是什么?
uj5u.com熱心網友回復:
對于一個特定的人來說
。使用OFFSET和LIMIT。
select *
from mytable
where personid = 3
order by seentime
offest 1
限制1。
(根據我的閱讀,曾經有一個單一的DBMS叫Presto,有時也叫PrestoDB和PrestoSQL。這就分成了兩個不同的產品,Presto和Trino。如果你使用Trino,你可以用一個標準的SQL FETCH子句來代替專有的LIMIT子句。
每個人
用標準SQL的分析函式ROW_NUMBER對行進行編號,并保留所有被第二次編號的行。
select seenid, personid, seentime
from
(
select
seenid, personid, seentime,
row_number() over(partition by personid order by seentime) as rn
from mytable
)編號的
where rn = 2
order by personid。
uj5u.com熱心網友回復:
在這種情況下使用ROW_NUMBER()函式
請參考這個鏈接,了解如何以不同的方式使用這個函式 ROW_NUMBER()
Query In > SQL Server (T-SQL)
SELECT seenID,personID,seeTime FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY personID ORDER BY personID) AS row_num, * as row_num.
FROM "YourTableName"
)AS T
WHERE row_num = 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334033.html
標籤:
