select语句,其列是select语句,但不是子查询

rqdpfwrv  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(554)

sql主机,
我不明白这个问题的一部分。在select语句中,有一些看起来像独立的“select语句”,几乎像一个函数。此代码是由blackbaud crm供应商编写的。作为独立的代码,代码中没有连接它们带入数据集中的信息,如您在from子句中看到的那样。最后一个奇怪的项目是,在列别名配偶\u id中,列配偶.reciprocarConstituteId甚至不存在于所引用的表中。有人能解释吗?
谢谢

  1. select
  2. CONSTITUENT.ID,
  3. CONSTITUENT.ISORGANIZATION,
  4. CONSTITUENT.KEYNAME,
  5. CONSTITUENT.FIRSTNAME,
  6. CONSTITUENT.MIDDLENAME,
  7. CONSTITUENT.MAIDENNAME,
  8. CONSTITUENT.NICKNAME,
  9. (select SPOUSE.RECIPROCALCONSTITUENTID
  10. from dbo.RELATIONSHIP as SPOUSE
  11. where SPOUSE.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID
  12. and SPOUSE.ISSPOUSE = 1) as [SPOUSE_ID],
  13. (select MARITALSTATUSCODE.DESCRIPTION
  14. from dbo.MARITALSTATUSCODE
  15. where MARITALSTATUSCODE.ID = CONSTITUENT.MARITALSTATUSCODEID) as [MARITALSTATUSCODEID_TRANSLATION]
  16. From
  17. dbo.constituent
  18. left join
  19. dbo.ORGANIZATIONDATA on ORGANIZATIONDATA.ID = CONSTITUENT.ID
  20. where
  21. (CONSTITUENT.ISCONSTITUENT = 1)
uqjltbpv

uqjltbpv1#

这些是相关的子查询。虽然没有明确的 JOIN ,有一个指向外部表的链接,其行为类似于联接(尽管约束比显式的多) JOIN s) 地址:

  1. (select SPOUSE.RECIPROCALCONSTITUENTID
  2. from dbo.RELATIONSHIP as SPOUSE
  3. where SPOUSE.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID AND
  4. -------^ correlation clause connecting to outer table
  5. SPOUSE.ISSPOUSE = 1
  6. ) as [SPOUSE_ID],

它的行为就像 LEFT JOIN . 如果没有匹配的行,则结果为 NULL .
请注意,在此上下文中,相关子查询也是标量子查询。这意味着它只返回一列,最多返回一行。
如果查询返回了多个列,则查询将出现编译时错误。如果查询返回多行,则会在查询上出现运行时错误。

相关问题