sql - 更新按 Batch.dateCreated asc 排序的学生,其中 Batch.PK 和 Student.BatchFK 匹配
问题描述
我在 sql server 中有两个表 - Student 和 Batch。
学生桌就是这种性质——
ID | studentname | batchTypeFfk | batchName
1 | Rob | 1 | Eng
批处理表具有这种性质 -
ID | name | batchTypeFk | date
1 | Eng | 1 | 05/18/2019
2 | Mtt | 1 | 05/20/2019
批处理类型具有这种性质 -
ID | name |
1 | Summer
我的挑战是按日期升序对批处理表进行排序,并使用最新日期更新 Student.batchName 表,其中 Batch.batchypeFk = Student.batchTypeFk 考虑到可能有尽可能多的批处理具有不同的批处理类型,并且尽可能多的学生使用使用 sql server 的批处理类型
我有这样的尝试,但它没有解决问题,因为它有 sql 错误
UPDATE a.batchName
FROM STUDENT a, BATCH b
where a.batchTypeFk == b.batchTypeFk orderby data asc
解决方案
我想,你可以这样更新。
Create Table #Batch
(
Id Int
,name varchar(50)
,batchTypeFk Int
,date datetime
)
Insert Into #Temp_St
Values
(1,'Rob',1,'Eng')
Insert Into #Batch
Values
(1,'Eng','1','20190518')
,(2,'Mtt',1,'20190520')
与 Cte
As
(
Select ROW_NUMBER() OVER (Order By date desc) as rn,s.*
From #Batch b
Inner Join #Temp_St s On b.batchTypeFk=s.batchTypeFk
)
更新 Cte
Set batchName='Summer'
Where rn=1
推荐阅读
- android - 如何在 Instagram 等活动之间滑动
- android - 如何调试admob插页式广告不可点击的问题?
- ruby-on-rails - 我想在 ruby 中获取数组的键值
- vue.js - Vue JS:单击时传递循环的当前对象
- c++ - 虽然 C++ 给出的结果与我预期的不同
- mongodb - 使用php从嵌入式数组中获取记录编写mongodb驱动程序查询
- windows - 如何取消这个烦人的提示?我尝试了很多方法,但没有奏效
- r - 如何在 R 延续中的数据框中将第一个唯一记录标记(标记)为 1,其余类似记录为 0
- linux - 服务启动失败
- android - java.lang.IllegalStateException:不是标准目录错误之一使用 DownloadManager