当前位置:  开发笔记 > 编程语言 > 正文

SQL语句中不熟悉的字符

如何解决《SQL语句中不熟悉的字符》经验,为你挑选了2个好方法。

我认为这是一种SQL新手问题,但这里有.

我有一个基于示例用户定义函数放在一起的SQL查询(SQL Server 2005):

SELECT 
    CASEID,
    GetNoteText(CASEID)
FROM 
( 
    SELECT 
        CASEID 
    FROM 
        ATTACHMENTS 
    GROUP BY 
        CASEID 
) i
GO 

UDF工作得很好(它连接相关表中多行的数据,如果这很重要)但我对FROM子句后的"i"感到困惑.查询在i中工作正常,但没有它就失败了."我"有什么意义?

编辑:正如乔尔在下面提到的,它不是一个关键词



1> Joel Coehoor..:

在FROM子句中使用子查询时,需要为查询指定名称.由于名称对您来说并不重要,因此通常会选择像"我"或"a"这样简单的名称.但你可以把任何名字放在你想要的地方 - 对于'我'本身没有任何意义,它肯定不是一个关键词.

如果您有一个非常复杂的查询,则可能需要将子查询与其他查询或表连接.在这种情况下,名称变得更加重要,你应该选择更有意义的东西.



2> Gordon Bell..:

我命名(子查询),这是必需的,并且还需要进一步的连接.

当连接表之间存在冲突的列名时,您必须使用子查询名称为外部查询中的列添加前缀,例如:

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

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有