我不知道這有什麼錯此查詢: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