在此SQL Server查询中,“ FOO”是什么意思?
-
22-10-2019 - |
题
例如...
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
在场...实际上是什么?
解决方案
这只是一个别名。
别名可帮助您减少编写查询时可能必须输入的文本量。
例如:
SELECT customer.Name, customer.OpenDate FROM customer
可以缩短为:
SELECT c.Name, c.OpenDate FROM customer c
在您的示例中,这是一个派生表(不是物理表),现在您可以实际上说:
选择foo.somefield而不是选择 *
其他提示
在此示例中 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 * FROM
( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10
最好问:在AS
“在SQL中的意思?
正如乔恩所说,这是一个别名。您可以在AS之前使用它而不是表达式。
SELECT veryverylongname AS V FROM dummy_table AS D WHERE D.V = 10
在这里,您可以看到该字段的两个别名v,d的d。
您也可以将其用于别名 SELECT
- 示例如您的示例。然后,别名将代表由子查询产生的表,并将在您的子查询中特定于字段。 SELECT
-关键词。
不隶属于 StackOverflow