Sql 无法绑定加入时选择错误
我正在实现这个功能:Sql 无法绑定加入时选择错误,sql,sql-server,select,outer-join,Sql,Sql Server,Select,Outer Join,我正在实现这个功能: DECLARE @Type AS VARCHAR(20) SET @Type='Student' SELECT Users.NTID, @Type FROM Users LEFT OUTER JOIN Courses ON Users.NTID=Courses.Faculty GROUP BY Users.NTID IF (Users.NTID=Courses.Faculty) B
DECLARE @Type AS VARCHAR(20)
SET @Type='Student'
SELECT Users.NTID, @Type
FROM Users
LEFT OUTER JOIN Courses
ON Users.NTID=Courses.Faculty
GROUP BY Users.NTID
IF (Users.NTID=Courses.Faculty)
BEGIN
SET @Type='Faculty'
END
这就是我得到的错误
Msg 4104, Level 16, State 1, Line 10
The multi-part identifier "Users.NTID" could not be bound.
Msg 4104, Level 16, State 1, Line 10
The multi-part identifier "Courses.Faculty" could not be bound.
如果我不添加这个,它会将所有行显示为学生
IF (Users.NTID=Courses.Faculty)
BEGIN
SET @Type='Faculty'
END
错误来自尝试在查询外部的代码中使用查询中的值。
if
语句不是查询的一部分
我相信您想要的是这样的,获取用户,其中Courses表中有匹配记录,而用户没有匹配记录:
select
Users.NTID, 'Student'
from
Users
left join Courses on Users.NTID = Courses.Faculty
where
Courses.Faculty is null
union all
select
Users.NTID, 'Faculty'
from
Users
inner join Courses on Users.NTID = Courses.Faculty
group by
Users.NTID
我不确定,如果我理解你想要实现的目标。由于您的if语句超出了Users.NTID和Courses.Faculty字段的范围,所以您都会出现此错误 如果要将Users表上的记录标记为Students/Faculty,可以尝试此查询。它只是在select中获取if语句 选择DISTINCT Users.NTID,CASE WHEN Courses.Faculty为空,然后选择'Faculty'或'Student'以PersonType结尾 来自用户 左外连接用户上的课程。NTID=Courses.Faculty