[英]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.