Sql 如何更新表

Sql 如何更新表,sql,sqlite,Sql,Sqlite,我有两张桌子T1和T2 T1 T2 首先,我想知道如何使用update查询对T2进行排序 Id name receive 1 jon 500 1 jon 500 2 jim 700 2 jim 700 3 ben 100 3 ben 200 之后,我想像这样更新T1 Id name open receive close 1 jon 5000 1000 4000 2 jim 6000 1400 4600 3 ben

我有两张桌子T1和T2

T1

T2

首先,我想知道如何使用update查询对T2进行排序

Id name receive
1  jon   500
1  jon   500
2  jim   700
2  jim   700
3  ben   100
3  ben   200
之后,我想像这样更新T1

Id name  open   receive close
1  jon   5000   1000    4000
2  jim   6000   1400    4600
3  ben   9000    300    8700
Select * from #T2
Order By Id ASC
我正在使用Sqlite

第一个问题

select * from T2 order by Id, receive
第二个问题

update T1
set T1.receive = T2.receive,
    T1.close = T1.open - T2.receive
from T1
inner join (select Id, sum(receive) receive from T2 group by Id) T2
    on T1.Id = T2.Id

我不知道为什么要更新表,因为您可以像这样使用SELECTORDERBY子句

Id name  open   receive close
1  jon   5000   1000    4000
2  jim   6000   1400    4600
3  ben   9000    300    8700
Select * from #T2
Order By Id ASC
现在,对于第三个屏幕截图,您可以使用

Update t1
Set  T1.[receive] = T2.[receive]
,T1.[close] = T1.[open]- T2.[receive]
from #T1 t1
inner join(
Select t2.ID,t2.name,Sum(t2.[receive]) AS [receive] from #T2
Group By ID,name) T2
on T1.Id=T2.Id
如果您使用了以下示例

Create Table #T1 (Id int,name nvarchar(255), [open] int,[receive] int, [close] int)

Insert into #T1 Values
(1,'jon',5000,0,5000),
(2,'jim',6000,0,6000),
(3,'ben',9000,0,9000)


Create Table #T2(Id int,name nvarchar(255),[receive] int)

 Insert into #T2 Values
(1,'jon',500),
(3,'ben',200),
(2,'jim',700),
(1,'jon',500),
 (2,'jim',700),
  (3,'ben',100)

你昨天不是问了同样的问题吗?这个问题是不同的。当在T2中输入新条目时,它可能也会按顺序更新T2。更新T2是什么意思?你是说第一个SQL?它只从T2检索数据;对于第二个SQL,当您仅执行SQL时,它将更新T1,如果您想自动执行,则需要一个触发器