如何解决sql server top查询
| 我不知道此查询出了什么问题:select * from products,top 1 * from pic
where products.productId = pic.productId
我有“产品”和“图片”表,每个产品可以有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)
编辑
受到另一个答案的启发,改用APPLY ...
SELECT
*
FROM
products
OUTER APPLY
(SELECT TOP 1 * FROM pic WHERE productID = products.ProductID ORDER BY id DESC) AS pic
,您需要一个子查询
为每个ProductID选择第一个PicID
与Pic表本身结合以获取其他列
与产品一起获得产品列
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
,也有带子节的方法,但请避免在您的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。