例如...

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-关键词。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top