Sql server SQL查询从一个表中获取前1行,并将其作为列字段放到另一个表中
我试图从product表中获取与category ID匹配的第一行,并将该值放入category tables meta description字段,此时它将最后一条记录放入该字段,但我需要第一条记录,它是最畅销的 下面是我尝试使用的代码,我已经很晚了,我很累,如果一个神奇的仙女能来帮我解决这个问题,我会给你100个业力点Sql server SQL查询从一个表中获取前1行,并将其作为列字段放到另一个表中,sql-server,Sql Server,我试图从product表中获取与category ID匹配的第一行,并将该值放入category tables meta description字段,此时它将最后一条记录放入该字段,但我需要第一条记录,它是最畅销的 下面是我尝试使用的代码,我已经很晚了,我很累,如果一个神奇的仙女能来帮我解决这个问题,我会给你100个业力点 UPDATE Category SET MetaTitle = Name + ' Audio Books', MetaKeywords = Name +
UPDATE Category
SET
MetaTitle = Name + ' Audio Books',
MetaKeywords = Name + ' ,audio books, download, free, audio book, online, audio book, audiobooks, audiobook, mp3 books, cd, free trial, spoken, spoken word, talking, talking books',
MetaDescription = 'Our best sellers in audio books for ' + Name + ' which includes ' + pname
FROM
(
SELECT TOP 1
p.Name as pname,
pcm.CategoryId as pCat,
p.CreatedOnUtc
FROM
Product p
INNER JOIN
Product_Category_Mapping pcm
ON
p.Id = pcm.ProductId
ORDER BY
CreatedOnUtc DESC
) newproduct
WHERE
Category.Id = newproduct.pCat
and Category.Id >=22
and ParentCategoryId <> 0
ps:在desc上创建的将显示我想要的记录。发件人中的查询将只获取所有类别中的单个最新产品。所以它只会更新产品所属的任何类别 你需要获得每个类别的顶级产品。试试这个:
UPDATE Category
SET
MetaTitle = Name + ' Audio Books',
MetaKeywords = Name + ' ,audio books, download, free, audio book, online, audio book, audiobooks, audiobook, mp3 books, cd, free trial, spoken, spoken word, talking, talking books',
MetaDescription = 'Our best sellers in audio books for ' + Name + ' which includes ' + pname
FROM
(
SELECT
p.Name AS pname,
pcm.CategoryId AS pCat,
p.CreatedOnUtc,
ROW_NUMBER() OVER (
PARTITION BY pcm.CategoryId
ORDER BY CreatedOnUtc DESC
) AS RowNumber
FROM Product p
INNER JOIN Product_Category_Mapping pcm
ON p.Id = pcm.ProductId
) newproduct
WHERE
newproduct.RowNumber = 1
AND Category.Id = newproduct.pCat
AND Category.Id >=22
AND ParentCategoryId <> 0
这里是暗中拍摄,因此如果CreatedOnUtc DESC的ORDER给了您最后一条记录,它不会按照CreatedOnUtc ASC的顺序返回第一条记录吗?子句us正确,我也需要将其放在查询末尾,但出于某种原因,它不喜欢ORDER BY,有什么想法吗?是的,您不能在子查询中使用ORDER BY。因此,您可能需要将UPDATE语句从子查询中分离出来,以获取更新所需的数据。OK you Ben,这是一份很好的礼物,我希望您度过愉快的一天,同时也感谢fnostro-