sql - 如何从主ID加入表并将ID与主ID进行比较
问题描述
当我尝试获取结果时,出现以下错误:
消息 4104,级别 16,状态 1,行 2 无法绑定多部分标识符“res.MainStaying”。
select *
from ConvictedPersons as cp
inner join (
select *
from Person
where ID = cp.id
) as hp
on hp.ID is not null
select hrt.NameRU, r2as.ID, res.*
from PunishmentMeasure as pm
inner join CourtDecisions as cd
on cd.ID = pm.CourtDecisionID
inner join Resolutions as res
on res.ID = cd.ResolutionID
left join (
select top 1 *
from Resolutions
where MainStayingID = res.MainStayingID
order by ID DESC
) as r2as
on r2as.ID is not null
解决方案
From
作为(or ) 子句一部分的子查询join
无权访问主查询,这就是您收到错误消息的原因。
(顺便说一句,在第一次选择时,您应该得到相同的错误,只是在cp.id
而不是res.MainStayingID
)
第一个查询可以通过简化来修复:
select *
from ConvictedPersons as cp
inner join Person
on Person.ID = cp.Id
left join
可以通过将 更改为相关子查询来修复第二个查询:
select hrt.NameRU,
(
select top 1 ID
from Resolutions
where MainStayingID = res.MainStayingID
order by ID DESC
) as ID,
res.*
from PunishmentMeasure as pm
inner join CourtDecisions as cd
on cd.ID = pm.CourtDecisionID
inner join Resolutions as res
on res.ID = cd.ResolutionID
推荐阅读
- html - 如何更改 BlueMail 应用程序中的链接样式?
- java - Apache CXF 捕获 SocketTimeoutException
- python - 根据列值附加两个边缘列表文件
- android - 从运行列表中删除 Android 模拟器 android-studio
- dhtmlx - 选择过滤器 dhtmlx 显示 html 编码的特殊字符
- ios - 使用动态 url 深度链接 iOS
- ios - Actionscript netStream 用 ios 播放 mp4
- apache - 有条件的 apache 重写
- http - 从 webdav 服务器下载文件
- python - openCV:cv2.VideoCapture(0) 和 cv2.VideoCapture(-1) 的问题