繁体   English   中英

在此SQL Server查询中,“ foo”是什么意思?

[英]What does “foo” mean in this SQL Server Query?

例如

SELECT * 
  FROM ( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking,
                stud_id, 
                stud_name, 
                stud_mark 
           FROM tbl_student ) AS foo 
 WHERE ranking = 10

foo在这里...实际上是做什么的?..

在此示例中, foo是表别名。 使用方法如下:

SELECT foo.* 
  FROM ( SELECT RANK() OVER (ORDER BY ts.stud_mark DESC) AS ranking,
                ts.stud_id, 
                ts.stud_name, 
                ts.stud_mark 
           FROM tbl_student ts) AS foo 
 WHERE foo.ranking = 10

如果您未为派生表(AKA内联视图)指定表别名,则SQL Server(和MySQL)将引发错误。

它只是一个别名。

别名可帮助您减少编写查询时可能必须输入的文本量。

例如:

SELECT customer.Name, customer.OpenDate FROM customer

可以缩短为:

SELECT c.Name, c.OpenDate FROM customer c

在您的示例中,它是一个派生表(不是物理表),现在您实际上可以说:

SELECT foo.someField而不是SELECT *

它是派生查询的表别名/标识符

没有它,您将得到一个错误,因为派生表没有标识符

SELECT * FROM 
 ( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10

最好问一下:SQL中“ AS ”后的表达式是什么意思?

正如乔恩所说,这是一个别名。 您可以使用它代替AS之前的表达式。

SELECT veryverylongname AS V FROM dummy_table AS D WHERE D.V = 10

在这里,您可以看到字段的两个别名V和表格的D。

您也可以使用它作为示例中完整SELECT别名。 别名将代表子查询生成的表,并在SELECT -keyword之后的子查询中具有指定的字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM