现在我有两个数据表 A 和表 B 需要根据B表中的违规时间 人名和日期将对应的违规内容加到A表的对应工作记录表里 如何判断 用left join可以吗

现在我有两个数据表 A 和表 B 需要根据B表中的违规时间 人名和日期将对应的违规内容加到A表的对应工作记录表里 如何判断 用left join可以吗
如果left join不行那要如何达到这种效果呢
A表

开始工作时间结束工作时间人名日期
11:3012:30A2022-04-10
13:3014:30A2022-04-10
15:3016:30A2022-04-10
17:3018:30B2022-04-10
9:3010:30B2022-04-10

B表

违规时间违规内容人名日期
13:50抽烟A2022-04-10
15:50危险驾驶A2022-04-10
15:50抽烟B2022-04-10

效果

工作开始时间工作结束时间姓名日期违规内容
11:3012:30A2022-04-10
13:3014:30A2022-04-10抽烟
15:3016:30A2022-04-10危险操作
17:3018:30B2022-04-10抽烟
9:3010:30B2022-04-10

两种方式:
第一种,表B数据更新到表A:

update A
set A.违规内容=ISNULL(B.违规内容,'')
from A
left join B on A.日期=B.日期 and A.姓名=B.姓名 and B.违规时间>=A.工作开始时间 and B.违规时间<=A.工作结束时间

第二种,展示的时候两表关联查询:

select
A.工作开始时间,
A.工作结束时间,
A.姓名,
A.日期,
ISNULL(B.违规内容,'')
from A
left join B on A.日期=B.日期 and A.姓名=B.姓名 and B.违规时间>=A.工作开始时间 and B.违规时间<=A.工作结束时间

以上,为空判断ISNULL是SQLServer写法,mySql用IFNULL,oracle用NVL

若有帮助,请采纳~

可以用left join A表在左边就可以,不用left join也可以,查两张表