从内连接MSSQL中选择一行

时间:2015-03-05 11:57:54

标签: sql-server inner-join

我遇到了问题,我尝试在网上搜索,但无法找到解决问题的方法。

我有2个表,一个是tblproducts,另一个是tblproductImages。

tblproductImages有一个与tblproducts fldproductID匹配的fldProduct_FK。

我想选择所有产品,但每种产品只能选择一张图片。

希望有人可以提供帮助。

SELECT * FROM tblProduct AS P
INNER JOIN 
tblProductImage AS I
ON 
P.fldProductID = I.fldProduct_FK

2 个答案:

答案 0 :(得分:3)

对于SQL Server,这是cross apply

的完美示例
SELECT *, II.*
    FROM tblProduct AS P 
CROSS APPLY (
    SELECT top 1 * FROM tblProductImage AS I 
    where P.fldProductID = I.fldProduct_FK
  ) AS II

答案 1 :(得分:1)

您可以使用内部选择:

SELECT *, (SELECT TOP 1 fldImageID FROM tblProductImage WHERE fldProduct_FK = tblProduct.fldProductID)
FROM tblProduct

当然,您无法控制将选择该图像。它可能始终是相同的图像,也可能不是。此外,如果找不到图像,查询将引发错误。