获取上一个号码父ID并更新另一列

时间:2016-12-08 10:51:46

标签: sql

我在SQL中有一个查询:

我有一张这样的表

id  typeid amount   created date          parenttypeid
38  2   5000.00    2016-12-08 15:01:27.433  NULL
39  2   5000.00    2016-12-08 15:01:27.433  NULL
40  1   5000.00    2016-12-08 15:01:27.433  NULL
41  4   5000.00    2016-12-08 15:01:27.437  NULL
42  1   5000.00    2016-12-08 15:01:27.437  NULL
43  4   5000.00    2016-12-08 15:01:27.437  NULL
44  1   5000.00    2016-12-08 15:01:27.437  NULL
45  1   5000.00    2016-12-08 15:01:27.437  NULL
46  3   5000.00    2016-12-08 15:01:27.437  NULL
47  3   5000.00    2016-12-08 15:01:27.437  NULL

我需要找到特定号码的立即数并获取其父ID并在parenttypeid字段中更新

例如:

type id:4,它的前一个值是3,我们有2行,类型为id 3.我需要获取最新类型id的父ID - 即。,47。并将47更新为parenttypeid列。

我只需要sql查询

任何人都可以提供帮助。

此致 斯利拉姆

2 个答案:

答案 0 :(得分:0)

这将为您提供所需的内容,假设您使用SQL Server并更新第一部分,我将您作为尝试

select top 1 id from table where typeid=4-1 order by id desc 

答案 1 :(得分:0)

试试这个(SQL SERVER 2012或更高版本):

;WITH ToUpdate 
AS (
     SELECT TOP 1 id,LAG(id,1) OVER (ORDER BY typeid DESC) AS [val]
     FROM [YourTable] 
     WHERE typeid=(LAG(typeid) OVER (ORDER BY typeid DESC))-1 
     ORDER BY id DESC
) 

Update Y
SET Y.id=C.[val]
FROM CTE C
INNER JOIN [YourTable]  Y ON Y.id=C.id