2012-10-16 38 views
0

可能重複:
SQL Server: Get Top 1 of Each Group內加入與選擇

我有MS SQL 2個表。 tblProducts和tblProductsImage之一。

並且所有產品都有最小值。 2張照片。但我只想展示第一張圖片,每個產品。

我該怎麼做這個INNER JOIN和SELECT命令。

+5

應如何圖像中選擇?隨機?最近的?最好看的?另外,請包括可用的數據來作出決定。 * [和什麼版本的SQL Server?] * – MatBailie

回答

1

如果你可以使用應用可以使用這樣的查詢,但它是由ID

select * 
from tblProducts as P 
    outer apply 
    (
     select top 1 T.Image from tblProductsImage as T 
     where T.ProductId = P.Id 
     order by T.Id 
    ) as PI 
+0

+1 - '應用'爲贏得:) – MatBailie

1

下令嘗試是這樣的:

SELECT * 
FROM TBLPRODUCTS T1 
     INNER JOIN (SELECT *, 
          Row_number() 
          OVER ( 
           PARTITION BY PRODUCT_ID 
           ORDER BY X) RN 
        FROM TBLPRODUCTSIMAGE)T2 
       ON T1.PRODUCT_ID = T2.PRODUCT_ID 
WHERE T2.RN = 1 
+1

+1:但要注意...爲了簡化這一點,刪除一個級別的子查詢通過移動'T .RN = 1'到最外面的查詢*(在WHERE子句或JOIN中)*,和/或使用公用表表達式而不是子查詢。 – MatBailie

+0

@Dems,感謝您的想法! – Gidil