Sql 如何更新表
我有两张桌子T1和T2 T1 T2 首先,我想知道如何使用update查询对T2进行排序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
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,如果您想自动执行,则需要一个触发器