首页 > 解决方案 > 为什么我的派生表(子查询)不能有别名

问题描述

对不起这个奇怪的问题。

我知道 sql 有一个规则是“每个派生表都必须有自己的别名”。例如:这是错误的:

SELECT ID FROM (SELECT * FROM (SELECT * FROM IDs));

它应该是:

SELECT ID FROM 
(SELECT * FROM (SELECT * FROM IDs) 
AS alias) AS anotherAlias;

但我的代码as alias是错误的:

SELECT ID FROM tableA
WHERE ID NOT IN
(SELECT ID FROM tableB) AS alias;

标签: sql

解决方案


只有子句中的子查询才需要表别名FROM。这样的子查询有时称为派生表。在某些(但不是全部)数据库中,所有派生表都需要一个别名。

SELECT子句中,子查询也可以使用别名——但那是列别名。

在您的示例中,子查询不代表任何结果集或值,因此不需要别名。


推荐阅读