sql - 为什么我的派生表(子查询)不能有别名
问题描述
对不起这个奇怪的问题。
我知道 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;
解决方案
只有子句中的子查询才需要表别名FROM
。这样的子查询有时称为派生表。在某些(但不是全部)数据库中,所有派生表都需要一个别名。
在SELECT
子句中,子查询也可以使用别名——但那是列别名。
在您的示例中,子查询不代表任何结果集或值,因此不需要别名。
推荐阅读
- c# - 由于错误类型“...”未标记为可序列化,C# 无法调整控件大小
- crystal-reports - 如何在每页水晶报表中打印特定行
- python-3.x - Lambda 函数如何获取给定 S3 路径中最后修改文件的名称?
- pjsip - PJSIP 在树莓派模型 3B+ 中引起断言
- java - Spring Boot JSON解析错误:无法构造模型实例
- c# - 如何根据列值从 Excel 电子表格中选择行并将其插入 dataGridViews?
- database - 关于在 PostgreSQL 中重构/扩展基于事件的巨大生产表的建议
- xml - 使用条件 xslt 1.0 将特定元素值替换为新字符串
- c# - 返回时我收到错误
`.. ASP.NET - java - Java:未报告的异常异常;必须被抓住或宣布被扔掉