簡體   English   中英

sql如何使用行號進行內部聯接

[英]sql how to do an inner join with row number

我正在嘗試使用dapper MSSQL與行號進行內部聯接,並且不斷收到此異常。 附加信息:為'threadem'多次指定了'id'列 我有2個表線程和zip,它們都具有id的主鍵,我不知道這是否與它有關,這是我的代碼

SELECT z.*,
       t.*
FROM   (SELECT ROW_NUMBER() OVER (ORDER BY t.activities DESC) AS Row,
               z.*,
               t.*
        FROM   threads t
               INNER JOIN zips z
                 ON z.city = @Ucity
                    AND z.state = @Ustate
        WHERE  t.latitudes >= z.ThirtyLatMin
               AND z.ThirtyLatMax >= t.latitudes
               AND t.longitudes >= z.ThirtyLonMin
               AND z.ThirtyLonMax >= t.longitudes) AS threadem
WHERE  ROW >= 1
       AND Row <= 5 

我該如何解決才能停止收到此錯誤

首先,如果您使用的是SQL Server 2012+,則可以先使用fetch first . . . offset fetch first . . . offset fetch first . . . offset語法。 比行號更方便。

解決問題的最佳方法是顯式列出所有需要的列。 然后,如果表中的兩列具有相同的名稱,請使用別名重命名它們。 就像是:

SELECT t.*
FROM   (SELECT ROW_NUMBER() OVER (ORDER BY t.activities DESC) AS Row,
               z.zcol1, z.zcol2, . . .,
               t.tcol1, t.zcol2, . . 
        FROM threads t INNER JOIN
             zips z
             ON z.city = @Ucity AND z.state = @Ustate
        WHERE t.latitudes >= z.ThirtyLatMin AND
              z.ThirtyLatMax >= t.latitudes AND
              t.longitudes >= z.ThirtyLonMin AND
              z.ThirtyLonMax >= t.longitudes
      ) t
WHERE ROW >= 1 AND Row <= 5 ;

如果你不想row在外部查詢返回的列,那么你需要列出所有想在外部列select

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM