Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL查询从一个表中获取前1行,并将其作为列字段放到另一个表中_Sql Server - Fatal编程技术网

Sql server SQL查询从一个表中获取前1行,并将其作为列字段放到另一个表中

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 +

我试图从product表中获取与category ID匹配的第一行,并将该值放入category tables meta description字段,此时它将最后一条记录放入该字段,但我需要第一条记录,它是最畅销的

下面是我尝试使用的代码,我已经很晚了,我很累,如果一个神奇的仙女能来帮我解决这个问题,我会给你100个业力点

 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-