4张表:
User 用户表
Id
Name数据: 1 用户1
Dossier 档案表
Id
Name
UserId数据: 1 xxx档案 1
2 zzzz档案 1
DossierBehavior 档案行为表
DossierId(档案表的Id)
Behavior (行为)
AdminId
CreateTime数据: 1 Create 1 2019-11-25
1 Update 1 2019-11-29
Admin 管理员表
Id
Name
数据: 1 管理员1 1行为表有多个记录或者没有记录我想查出结果是:
当UserId = 1时Id Name Behavior BehaviorTime AdminName
1 xxx档案 Update 2019-11-29 管理员1
2 zzzz档案 null null null
Behavior表要根据CreateTime升序取第一条。其实就是取时间最近的一条。这是我的查询语句SELECT *FROM [Dossier] d Left JOIN [DossierBehavior] dh ON ( [d].[Id] = [dh].[DossierId] ) Left JOIN [Admin] ad ON ( [dh].[AdminId] = [ad].[Id] ) WHERE ((( [d].[UserId] = 1 ) AND ( [d].[Status] = 1 )) AND ( [dh].[Id] =(SELECT TOP 1 [Id] FROM [DossierBehavior] WHERE ( [DossierId] = [d].[Id] ) ORDER BY [CreateTime] DESC)))
因为第二个档案表的DossierBehavior为空导致第二个档案查询不出结果Id Name Behavior BehaviorTime AdminName
1 xxx档案 Update 2019-11-29 管理员1
除了单独去遍历,有什么处理方法吗?
解决方案 »
- 求救 sql serve2005 master拒绝创建数据库,权限问题
- 一个关于触发器的问题。
- 如何把多张表中的查询结果union在一起(表的数量未定)?
- INSTEAD OF 触发器 问题
- 我想 通过sql语句查询 一个表中 的所有 外码
- 成都微软高校技术教育交流大会
- 广义笛卡尔积, 搞了我一天半时间了?
- group by 后面带自定函数的问题,很奇怪!
- 如何把10000以内的数字转化为字符串?
- 使用hibernate4.3连接SQLServer2012,所有的配置都正常,但是出现无法打开数据库,同时爆出连接错误。 hibernate.cfg.xml配置
- sql中插入删除数据,因外键约束而失败,解决办法:
- 请教关于null
SELECT *
FROM [Dossier] d Left JOIN
(SELECT * FROM [DossierBehavior] A WHERE NOT EXISTS (SELECT 1 FROM [DossierBehavior] WHERE A.DossierId=DossierId AND CreateTime>A.CreateTime)) dh ON ( [d].[Id] = [dh].[DossierId] )
Left JOIN [Admin] ad ON ( [dh].[AdminId] = [ad].[Id] )
WHERE [d].[UserId] = 1 AND [d].[Status] = 1