您现在的位置是:主页 > news > 宜昌网站建设哪家好/广告联盟app下载

宜昌网站建设哪家好/广告联盟app下载

admin2025/6/16 21:51:14news

简介宜昌网站建设哪家好,广告联盟app下载,定制做网站报价,宝塔软件怎么做网站前言 今天在导入数据到系统后需要根据时间排序对刚导入的TOP N条进行数据更新,之前没遇到过UPDATE TOP...ORDER BY,以此作为备忘录。 SQL SERVER之UPDATE TOP...ORDER BY 我们利用AdventureWorks2012实例数据库来演示,一般情况我们如下一次性…

宜昌网站建设哪家好,广告联盟app下载,定制做网站报价,宝塔软件怎么做网站前言 今天在导入数据到系统后需要根据时间排序对刚导入的TOP N条进行数据更新,之前没遇到过UPDATE TOP...ORDER BY,以此作为备忘录。 SQL SERVER之UPDATE TOP...ORDER BY 我们利用AdventureWorks2012实例数据库来演示,一般情况我们如下一次性…

前言

今天在导入数据到系统后需要根据时间排序对刚导入的TOP N条进行数据更新,之前没遇到过UPDATE TOP...ORDER BY,以此作为备忘录。

SQL SERVER之UPDATE TOP...ORDER BY

我们利用AdventureWorks2012实例数据库来演示,一般情况我们如下一次性更新所有数据,如下:

SELECT * FROM Production.ProductUPDATE Production.Product SET ListPrice = 1

如上我们一次性将表Production.Product中的列ListPrice更新为1,结果如下:

但是我们项目实际需求是因为之前数据库已存在对应企业下数据,当前我们导入的数据需要更新一列作为标识区分,如下:

SELECT TOP 10.* FROM  Production.Product
WHERE SafetyStockLevel = 1000
ORDER BY SellStartDate DESC

大意如上,将导入的数据根据SellStartDate日期倒序,并根据条件筛选刚导入的数据10条,接下来这是对其进行更新。

UPDATE TOP(10) Production.Product  SET ListPrice = 1 
WHERE SafetyStockLevel = 1000
ORDER BY SellStartDate DESC

到现在我才知道UPDATE不能和ORDER BY一起使用,涨知识了,又学到了一点。接下来则是解决UPDATE TOP...ORDER BY的问题。我想到了方案是根据CTE更新,如下:

;WITH Product AS
(SELECT TOP 10.* FROM  Production.ProductWHERE SafetyStockLevel = 1000ORDER BY SellStartDate DESC
)
UPDATE Product SET ListPrice = 1

这是解决方案中的其中之一,我们也可以如下这样做:

UPDATE Production.Product SET ListPrice = 1
WHERE ProductID IN(SELECT TOP 10 ProductID FROM  Production.ProductWHERE SafetyStockLevel = 1000ORDER BY SellStartDate DESC)

或者可以如下这样做:

UPDATE Production.ProductSET ListPrice = updateValue FROM (SELECT TOP 10 ProductID, 1 AS updateValue FROM Production.Product  ORDER BY SellEndDate DESC) AS t1 
WHERE  Production.Product.ProductID = t1.ProductID;

转载于:https://www.cnblogs.com/CreateMyself/p/9022515.html