我有一个包含以下列的表格:
ConnectionId INT - primary key, identity,
ServerId INT,
ClientId INT,
Time DATETIME,
ConnectionType INT
如何定义一个最佳视图,该视图返回每个组合的所有组合ServerId
以及ClientId
最后连接的时间和类型?
假设您使用的是支持排名功能的数据库(例如 SQL Server 2005+、Oracle、Postgres、DB2、Teradata ......),您可以这样做:
create view as
select ServerId, ClientId, time, type
from (select t.*,
row_number() over (partition by ServerId, ClientId order by time desc) as seqnum
from t
) t
where seqnum = 1
我不知道您所说的“最佳视图”是什么意思。如果您希望它更好地工作,请在 ServerId、ClientId 和 time 上创建一个由三部分组成的索引。