首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SELECT语句的SQL别名

SELECT语句的SQL别名
EN

Stack Overflow用户
提问于 2012-07-14 06:12:21
回答 4查看 139.2K关注 0票数 28

我想做一些像这样的事情

(SELECT ... FROM ...) AS my_select
WHERE id IN (SELECT MAX(id) FROM my_select GROUP BY name)

是否有可能以某种方式完成"AS my_select“部分(即为SELECT语句分配别名)?

(注:这是一个理论问题。我意识到我可以在不给SELECT语句分配别名的情况下做到这一点,但我想知道我是否可以用别名来做到这一点。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-14 06:17:47

不确定您试图用这种语法来表示什么,但在几乎所有的RDBMS中,您都可以在FROM子句(有时称为“inline-view”)中使用子查询:

SELECT..
FROM (
     SELECT ...
     FROM ...
     ) my_select
WHERE ...

在高级的“企业”RDBMS-es (如oracle、SQL Server、postgresql)中,您可以使用通用表表达式,允许您按名称引用查询,甚至多次重用它:

-- Define the CTE expression name and column list.
WITH Sales_CTE (SalesPersonID, SalesOrderID, SalesYear)
AS
-- Define the CTE query.
(
    SELECT SalesPersonID, SalesOrderID, YEAR(OrderDate) AS SalesYear
    FROM Sales.SalesOrderHeader
    WHERE SalesPersonID IS NOT NULL
)
-- Define the outer query referencing the CTE name.
SELECT SalesPersonID, COUNT(SalesOrderID) AS TotalSales, SalesYear
FROM Sales_CTE
GROUP BY SalesYear, SalesPersonID
ORDER BY SalesPersonID, SalesYear;

(来自http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx的示例

票数 43
EN

Stack Overflow用户

发布于 2012-07-14 06:19:21

您可以使用SELECT语句的WITH子句来完成此操作:

;
WITH my_select As (SELECT ... FROM ...) 
SELECT * FROM foo
WHERE id IN (SELECT MAX(id) FROM my_select GROUP BY name)

这是ANSI/ISO SQL语法。我知道SQL Server、Oracle和DB2都支持它。其他人不太确定...

票数 6
EN

Stack Overflow用户

发布于 2012-07-14 06:14:38

可以,但您只能在子选择中选择一列

SELECT (SELECT id FROM bla) AS my_select FROM bla2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11479044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档