Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 server sql server 2008,如何在内部连接3个表时消除重复_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server sql server 2008,如何在内部连接3个表时消除重复

Sql server sql server 2008,如何在内部连接3个表时消除重复,sql-server,sql-server-2008,Sql Server,Sql Server 2008,这是我的问题。当我内部连接两个表时,没有问题 SELECT S.* , U.Avatar , U.Displayname , ROW_NUMBER() OVER ( ORDER BY S.Id DESC ) rownum FROM dbo.Smoothie AS S INNER JOIN dbo.[User] AS U ON S.UserId = U.Id WHERE S.IsPublic = 1 AND

这是我的问题。当我内部连接两个表时,没有问题

 SELECT S.* ,
        U.Avatar ,
        U.Displayname ,
        ROW_NUMBER() OVER ( ORDER BY S.Id DESC ) rownum
 FROM   dbo.Smoothie AS S
        INNER JOIN dbo.[User] AS U ON S.UserId = U.Id
 WHERE  S.IsPublic = 1
        AND S.Status = 3
        AND S.UserId = 2
然后,我添加了另一个内部连接。现在,我有很多复制品

SELECT  S.* ,
        U.Avatar ,
        U.Displayname,
        ROW_NUMBER() OVER ( ORDER BY S.Id DESC ) rownum
FROM    dbo.Smoothie AS S
        INNER JOIN dbo.[User] AS U ON S.UserId = U.Id
        INNER JOIN dbo.Favorite AS F ON U.Id = F.UserId
WHERE   S.IsPublic = 1
        AND S.Status = 3
        AND F.UserId = 2
一种解决方案是使用不同的方法。但是,我必须注释掉行号,我需要该行号来进行分页。有没有其他方法可以消除重复

SELECT  DISTINCT S.* ,
        U.Avatar ,
        U.Displayname 
        -- ROW_NUMBER() OVER ( ORDER BY S.Id DESC ) rownum
FROM    dbo.Smoothie AS S
        INNER JOIN dbo.[User] AS U ON S.UserId = U.Id
        INNER JOIN dbo.Favorite AS F ON U.Id = F.UserId
WHERE   S.IsPublic = 1
        AND S.Status = 3
        AND F.UserId = 2

为什么不使用您拥有的查询,而不将行号作为子查询,然后稍后再添加行号:

SELECT *, 
    ROW_NUMBER() OVER ( ORDER BY subQuery.Id DESC ) rownum
FROM (
SELECT  DISTINCT S.* ,
    U.Avatar ,
    U.Displayname 
FROM    dbo.Smoothie AS S
    INNER JOIN dbo.[User] AS U ON S.UserId = U.Id
    INNER JOIN dbo.Favorite AS F ON U.Id = F.UserId
WHERE   S.IsPublic = 1
    AND S.Status = 3
    AND F.UserId = 2
) AS subQuery

为什么不使用您拥有的查询,而不将行号作为子查询,然后稍后再添加行号:

SELECT *, 
    ROW_NUMBER() OVER ( ORDER BY subQuery.Id DESC ) rownum
FROM (
SELECT  DISTINCT S.* ,
    U.Avatar ,
    U.Displayname 
FROM    dbo.Smoothie AS S
    INNER JOIN dbo.[User] AS U ON S.UserId = U.Id
    INNER JOIN dbo.Favorite AS F ON U.Id = F.UserId
WHERE   S.IsPublic = 1
    AND S.Status = 3
    AND F.UserId = 2
) AS subQuery

densite\u-Rank
还将使用未修改的查询执行此任务。

densite\u-Rank
还将使用未修改的查询执行此任务