我不知道这有什么错此查询:SQL Server的顶部查询
select * from products , top 1 * from pic
where products.productId = pic.productId
我对我们的产品和PIC表,每个产品可以有1到n知情同意,我想回到每一个产品和那
第一张图图的图片可以帮助
我不知道这有什么错此查询:SQL Server的顶部查询
select * from products , top 1 * from pic
where products.productId = pic.productId
我对我们的产品和PIC表,每个产品可以有1到n知情同意,我想回到每一个产品和那
第一张图图的图片可以帮助
你需要有一种唯一标识每张图片的方法,所以我认为该表格是一个ID列...
SELECT
*
FROM
products
LEFT JOIN
pic
ON pic.Id = (SELECT TOP 1 id FROM pic WHERE productID = products.ProductID ORDER BY id DESC)
编辑
另一个答案的启发,采用适用,而不是...
SELECT
*
FROM
products
OUTER APPLY
(SELECT TOP 1 * FROM pic WHERE productID = products.ProductID ORDER BY id DESC) AS pic
谢谢!这工作。 – Mostafa 2011-05-23 13:21:34
你需要一个子查询
SQL语句
SELECT *
FROM Products prod
LEFT OUTER JOIN Pic p ON p.ProductID = prod.ProductID
LEFT OUTER JOIN (
SELECT PicID = MIN(PicID)
, ProductID
FROM Pic
GROUP BY
ProductID
) pm ON pm.PicID = p.PicID
如果没有图片的产品 - 您的脚本将无法捕捉它。更改为左加入 – CristiC 2011-05-23 13:18:03
@Parkyprg - 你是对的,我已将它改为左边
,还设有款的方式,但请避免次选择你一样可以在你的TSQL
Select
*
,(select top(1) adress from pic where pic.productid=products.id /* if u wanna you also can order by id */ ) as Id
from products
你会得到什么结果?你期待什么结果? – Oded 2011-05-23 13:13:05
@Oded,关键字'top'附近的语法不正确。我想用与它相关的第一张图片返回所有产品 – Mostafa 2011-05-23 13:14:14
我提出了比我的更好的答案(在我看来),但现在它消失了? – MatBailie 2011-05-23 13:41:10