我对以下一段代码有一个简短的问题。为什么我们可以使用'NA' =
作为子查询?我的意思是,子查询可能会返回一组值,而不是一个值,对吧?谁能告诉我原因?非常感谢您的时间和关注。
proc sql;
select lastname, first name
from sasuser.staffmaster
where 'NA' =
(select jobcategory
from sasuser.supervisors
where staffmaster.empid = supervisors.empid);
quit;
再次感谢。
答案 0 :(得分:0)
假设EMPID
是员工的唯一ID(我希望它是?),并且每个员工只有一个主管,该查询应该每次都解析为一行。 (当然,从外部查询返回的每一行的单行 ,这很重要。想想它就像一个连接 - 这基本上是什么,一个稍微奇怪的措辞连接,通常会变成了SQL解析器的实际连接。)
但是,一般情况下,它可以解析为多行。 SAS将允许您进行查询,如果它只返回一行,它就可以工作;如果它返回2+行,则失败。正如Quentin在评论中指出的那样,这是一个correlated subquery。