我认为这是一种SQL新手问题,但这里有.
我有一个基于示例用户定义函数放在一起的SQL查询(SQL Server 2005):
SELECT CASEID, GetNoteText(CASEID) FROM ( SELECT CASEID FROM ATTACHMENTS GROUP BY CASEID ) i GO
UDF工作得很好(它连接相关表中多行的数据,如果这很重要)但我对FROM子句后的"i"感到困惑.查询在i中工作正常,但没有它就失败了."我"有什么意义?
编辑:正如乔尔在下面提到的,它不是一个关键词
在FROM子句中使用子查询时,需要为查询指定名称.由于名称对您来说并不重要,因此通常会选择像"我"或"a"这样简单的名称.但你可以把任何名字放在你想要的地方 - 对于'我'本身没有任何意义,它肯定不是一个关键词.
如果您有一个非常复杂的查询,则可能需要将子查询与其他查询或表连接.在这种情况下,名称变得更加重要,你应该选择更有意义的东西.
我命名(子查询),这是必需的,并且还需要进一步的连接.
当连接表之间存在冲突的列名时,您必须使用子查询名称为外部查询中的列添加前缀,例如:
SELECT c.CASEID, c.CASE_NAME, a.COUNT AS ATTACHMENTSCOUNT, o.COUNT as OTHERCOUNT, dbo.GetNoteText(c.CASEID) FROM CASES c LEFT OUTER JOIN ( SELECT CASEID, COUNT(*) AS COUNT FROM ATTACHMENTS GROUP BY CASEID ) a ON a.CASEID = c.CASEID LEFT OUTER JOIN ( SELECT CASEID, COUNT(*) AS COUNT FROM OTHER GROUP BY CASEID ) o ON o.CASEID = c.CASEID