Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询哪里有问题_Sql_Sql Server_Tsql - Fatal编程技术网

SQL查询哪里有问题

SQL查询哪里有问题,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个优化了速度的查询,这就是为什么它看起来有点奇怪的原因——前一段时间得到了一些帮助 希望得到这样的确切结果,但我只希望最后一分钟内的结果,而不是更早的结果 无论发生什么,此查询都将返回最后100,而不仅仅是最后一分钟的结果 SessionGuid不是唯一的——事实上,它是这个表中多行上的一个键 谢谢你的帮助 SELECT TOP(@resultCount) * FROM ( SELECT [UserSessionSequenceID] ,[

我有一个优化了速度的查询,这就是为什么它看起来有点奇怪的原因——前一段时间得到了一些帮助

希望得到这样的确切结果,但我只希望最后一分钟内的结果,而不是更早的结果

无论发生什么,此查询都将返回最后100,而不仅仅是最后一分钟的结果

SessionGuid不是唯一的——事实上,它是这个表中多行上的一个键

谢谢你的帮助

SELECT TOP(@resultCount) * FROM  
( 
    SELECT 
        [UserSessionSequenceID] 
        ,[SessionGuid] 
        ,SiteID
        ,IP
        ,UrlTitle
        ,Url
        ,Referer
        ,[Timestamp] 
        ,ROW_NUMBER() over (
            PARTITION BY [SessionGuid]  
            ORDER BY UserSessionSequenceID DESC) 
         AS sort  
   FROM [tblSequence] 
   where SiteID = @siteID
   and [Timestamp] > DATEADD(mi, -@minutes, (LEFT(GETDATE(),12)))
) AS new
WHERE sort = 1 
and not exists (
    select SessionGuid 
    from tblSequence
    where SiteID = @siteID
    and SessionGuid = new.SessionGuid
    and [TimeStamp] < DATEADD(mi, -@minutes, (LEFT(GETDATE(),12)))
)
ORDER BY [UserSessionSequenceID] DESC
试用

DATEADD(mi, -@minutes, GETDATE()) 
而不是

DATEADD(mi, -@minutes, (LEFT(GETDATE(),12)))
试用

DATEADD(mi, -@minutes, GETDATE()) 
而不是

DATEADD(mi, -@minutes, (LEFT(GETDATE(),12)))

我将您的查询重新编写为:

WITH new AS (
   SELECT [UserSessionSequenceID],
          [SessionGuid],
          SiteID,
          IP,
          UrlTitle,
          Url,
          Referer,
          [Timestamp],
          ROW_NUMBER() OVER (PARTITION BY [SessionGuid]  
                                 ORDER BY UserSessionSequenceID DESC) AS sort  
     FROM [tblSequence] 
    WHERE SiteID = @siteID
      AND [Timestamp] > DATEADD(mi, -@minutes, GETDATE()))
  SELECT TOP(@resultCount) 
         n.* 
    FROM new n
   WHERE n.sort = 1 
     AND NOT EXISTS (SELECT NULL
                     FROM tblSequence s
                    WHERE s.siteid = n.siteid
                      AND s.sessionguid = n.sessionguid
                      AND [TimeStamp] <= DATEADD(mi, -@minutes, GETDATE())
ORDER BY n.usersessionsequenceid DESC

我将您的查询重新编写为:

WITH new AS (
   SELECT [UserSessionSequenceID],
          [SessionGuid],
          SiteID,
          IP,
          UrlTitle,
          Url,
          Referer,
          [Timestamp],
          ROW_NUMBER() OVER (PARTITION BY [SessionGuid]  
                                 ORDER BY UserSessionSequenceID DESC) AS sort  
     FROM [tblSequence] 
    WHERE SiteID = @siteID
      AND [Timestamp] > DATEADD(mi, -@minutes, GETDATE()))
  SELECT TOP(@resultCount) 
         n.* 
    FROM new n
   WHERE n.sort = 1 
     AND NOT EXISTS (SELECT NULL
                     FROM tblSequence s
                    WHERE s.siteid = n.siteid
                      AND s.sessionguid = n.sessionguid
                      AND [TimeStamp] <= DATEADD(mi, -@minutes, GETDATE())
ORDER BY n.usersessionsequenceid DESC