SQL中什么时候需要给表名起别名?

2023-11-27

我注意到,在使用多个 JOIN 进行查询时,除非为其中一个表名指定一个别名,否则我的查询不起作用。

这是一个简单的例子来解释这一点:

This doesn't work:

SELECT subject
from items
join purchases on items.folder_id=purchases.item_id
join purchases on items.date=purchases.purchase_date
group by folder_id

This does:

SELECT subject
from items
join purchases on items.folder_id=purchases.item_id
join purchases as p on items.date=p.purchase_date
group by folder_id

有人可以解释一下吗?


您在查询中使用同一个表 Purchasing 两次。您需要通过给出不同的名称来区分它们。

您需要提供一个别名:

  • When the same table name is referenced multiple times

想象一下两个人拥有完全相同的约翰·多伊。如果您致电约翰,两人都会回复您的电话。您不能给两个人提供相同的名字,并假设他们知道您在打电话给谁。同样,当您给出名称完全相同的相同结果集时,SQL 无法识别从哪一个结果集中获取值。您需要给出不同的名称来区分结果集,这样 SQL 引擎就不会混淆。

Script 1: t1 and t2这里是别名

SELECT      t1.col2
FROM        table1 t1
INNER JOIN  table1 t2
ON          t1.col1 = t2.col1
  • When there is a derived table/sub query output

如果一个人没有名字,你打电话给他们,由于你无法打电话给那个人,他们不会回复你。同样,当您生成派生表输出或子查询输出时,它对于 SQL 引擎来说是未知的,并且不会调用什么。因此,您需要为派生输出命名,以便 SQL 引擎能够正确处理该派生输出。

Script 2: t1这里是别名。

SELECT col1
FROM
(
    SELECT col1
    FROM   table1
) t1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL中什么时候需要给表名起别名? 的相关文章

  • Java/Hibernate - 异常:内部连接池已达到其最大大小,当前没有可用的连接

    我第一次在大学项目中使用 Hibernate 而且我还是个新手 我想我遵循了我的教授和我阅读的一些教程给出的所有指示 但我不断收到标题中的异常 Exception in thread main org hibernate Hibernate
  • 获取列名称以及 JSON 响应

    我有三个实体类 我编写了包含两个表的联接的查询 表 费用类别 Entity Table name ExpensesCategories public class ExpensesCategories Id GeneratedValue st
  • 尝试通过比较不同的表从 SQL 查询输出正确的值

    我对 SQL 非常陌生 需要有关如何使用正确的查询完成此任务的帮助 我有 2 张桌子需要使用 表 TB1 有 id Name 1 bob 2 blow 3 joe 表 TB2 有 compid property 1 bob 2 blow 我
  • Crystal Reports 相当于“WHERE”

    我熟悉 SQL 但不熟悉 Crystal Reports 我正在尝试处理包含 5 列的导入数据集 id deathDate giftDate giftAmount Dead 123 2008 01 06 2011 09 08 25 00 T
  • 使用全文搜索查找精确匹配

    使用 Sql Server 2008 如何使用全文搜索来实际找到精确的字符串匹配 我对此感到非常困难 而且我在网上找不到令人满意的解决方案 例如 如果我正在搜索字符串 Bojan Skrchevski 我希望第一个结果正是如此 到目前为止
  • 查询 dns 别名

    我找到了一些code http msdn microsoft com en us library system net dns gethostbyaddress VS 71 aspx来自 msdn 站点 下面包含代码 看起来它将返回给定服务
  • 显式与隐式 SQL 连接

    显式内连接与隐式内连接之间有效率差异吗 例如 SELECT FROM table a INNER JOIN table b ON a id b id vs SELECT a b FROM table a table b WHERE a id
  • 实体框架 - 查询可为空列时出现问题

    我在从具有可为空的tinyint 列的表中查询数据时遇到问题 问题似乎是查询生成为 AND CAST Extent1 PositionEffect AS int p linq 3 gt p linq 3 NULL 如果我手动运行该查询 它不
  • mysql 在 sum() 函数上使用 concat,例如 concat(sum(col1),"%")

    我正在尝试合并多个查询 但其中一个查询使用 sum 当我尝试在此列上应用 concat 时 我得到不需要的 blob 结果 我如何在聚合列上应用 concat 和 union 我期待这个结果 SELECT row 1 col1 UNION
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • 按每月时间为用户标记标签

    数据源 User ID Visit Date 1 2020 01 01 12 29 15 1 2020 01 02 12 30 11 1 2020 04 01 12 31 01 2 2020 05 01 12 31 14 Problem 我
  • SQLite 自然连接损坏?

    我刚刚开始了解 NATURAL JOIN 而 SQLite 的行为并不像我预期的那样 SELECT FROM r1 NATURAL JOIN r2 NATURAL JOIN r3 and SELECT FROM r1 NATURAL JOI
  • 如何将列中的天数添加到 DB2 中的当前日期?

    我正在编写此 SQL 来动态计算一定的天数 如下所示 但我不知道如何让它工作 因为我不断收到错误 select Current Date Dynamic numbr of days calculation here from TableNa
  • 在 Access 数据库中对列包含数字和字母的数据进行排序

    请帮助我 因为我一直无法做到这一点 选择此列 columnA 的访问 SQL 是什么 以便它返回一个结果集 其中的不同值首先根据数字排序 然后根据字母排序 这是列值 10A 9C 12D 11G 9B 10C 9R 8T 我尝试过 从 tb
  • 无重复组合的交叉连接

    我知道这个问题与这个问题非常相似 对称交叉连接 https stackoverflow com questions 12490244 symmetric cross join还有这个 sql 中交叉连接的组合 不是排列 https stac
  • db2中如何删除所有非数字字母

    我在 DATA 列 varchar 中有一些数据 如下所示 Nowshak 7 485 m Maja e Korabit Golem Korab 2 764 m Tahat 3 003 m Morro de Moco 2 620 m Cer
  • 如何在事务中使用链接服务器插入远程表?

    我的链接服务器设置正确 我能够执行以下查询 插入 远程服务器 表 SELECT FROM 本地服务器 表 然而当我做同样的事情时交易内 开始传输 插入 远程服务器 表 SELECT FROM 本地服务器 表 提交交易 我收到类似的错误 用于
  • Oracle - 获取星期几

    今天是星期二 为什么当我运行这个 SQL 语句时 它说今天不是星期二 SELECT CASE WHEN TO CHAR sysdate Day Tuesday THEN Its Tuesday ELSE Its Not Tuesday EN
  • 每行中非空列的计数

    我有一个包含 4 列的表 在第 5 列中我想存储前 4 列中有多少个非空列的计数 例如 其中 X 是任意值 Column1 Column2 Column3 Column4 Count X X NULL X 3 NULL NULL X X 2
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字

随机推荐

  • 使用 ASP.NET MVC 2 上传文件的最佳方式是什么?

    上传可变大小的文件 对于 ASP NET MVC 2 应用程序文件系统来说非常大或非常小 的最佳方法是什么 到目前为止我的理解是这样的 人们似乎有两种处理这个问题的方法 假设文件可能非常大或非常小 1 在控制器操作中处理上传Request
  • jQuery:同一事件有多个处理程序

    如果我将两个事件处理程序绑定到同一元素的同一事件 会发生什么情况 例如 var elem elem click elem click 最后一个处理程序 获胜 还是两个处理程序都会运行 两个处理程序都将运行 jQuery 事件模型允许在一个元
  • Angular 4:日期管道,UTC 时间到本地时间:如何告诉 Angular 当前时区?

    我们将 Angular 4 与用 net core 编写的 MVC 应用程序一起使用 使用 SignalR 服务接收数据 集线器是用 C 编写的 数据库提供 Datetime2 7 字段 T SQL 收到的内容如下所示 对于日期字段 due
  • SQL FileStream + Entity Framework 存储大文件

    当我想将文件存储在文件流列中时 我总是需要将整个二进制文件读入内存 using MemoryStream memoryStream new MemoryStream sourceStream CopyTo memoryStream bina
  • 在 PHP 中解析 javascript 数组

    我似乎不知道如何将 JS 数组放入 PHP 中 我必须处理的事情看起来像这样 var arrLow e 495864 rank 8678591 rankmove p img src up php uStyle 144 UP 495864 e
  • “Create VIEW”必须是批处理中的唯一语句

    我有以下 SQL ALTER PROCEDURE dbo usp gettasks ID varchar 50 AS declare PDate Date WHILE DATEPART DW PDate 1 OR DATEPART DW P
  • 有没有办法从 C# 调用 RDTSC 汇编指令?

    我想要为我的 C 应用程序提供一个非常高分辨率的计时器 我想访问 RDTSC 汇编指令 有没有办法做到这一点 编辑 我正在移植一些 C 代码并尝试保留与原始代码相同的功能 我可能会切换到更 NET 的东西 但想要评估 RDTSC 指令 以便
  • 下一个js图像组件错误“url”参数有效但上游响应无效

    我正在从 tmdb api 获取数据 但是图像未加载 所以我在新选项卡中打开图像 然后它显示 url 参数有效 但上游响应无效那么如何解决这个问题 您是否已将图像的域添加到下一个配置中 下面是一个例子 next config js modu
  • 使用 AngularJS 和 Asp.Net MVC 通过 FormData 上传多个文件

    我想使用 Angular js 上传多个文件 为此我使用 FormData 这是我的表单字段
  • 是否可以更改虚拟内存页面大小?

    是否可以更改虚拟内存页面大小 我问这个是因为在维基百科上 MMU 文章的 X86 64 部分 它讨论了不同的页面大小 如果页面大小确实可以改变 那么如何改变呢 在 x86 64 上 您可以在以下命令的帮助下显式请求 2 MiB 页面 而不是
  • 如何在 App Engine Nodejs Standard 上访问内存缓存

    如何从node js标准环境访问memcached 该文档显然没有提到 App Engine 内存缓存可用于 Node JS 标准环境 至少目前没有 没有Node JS语言选项卡中内存缓存概述 page s 没有Caching Applic
  • NumPy 读取文件并动态过滤行

    我在 CSV 文件中写入了大量数字 只需加载该数组的一部分 从概念上讲我想打电话np genfromtxt 然后对结果数组进行行切片 但是 该文件太大 RAM 可能无法容纳 相关行的数量可能很小 因此不需要解析每一行 MATLAB有函数te
  • EXTENDS 挑战:预处理器函数宏和类类 oop

    背景 我一直在使用 C 预处理器来管理和 编译 具有多个文件和构建目标的半大型 JavaScript 项目 这提供了对 C 预处理器指令的完全访问 例如 include define ifdef等来自 javascript 的内容 这是一个
  • 使用 Xcode 8 创建通用框架?

    我公司的 iOS 框架旨在在真正的 iOS 设备上运行 所述框架当前作为 Xcode 项目中的附加目标生成 该项目也生成应用程序 这使得调试框架相对容易 我们最近收到了要求让它在模拟器中也能运行的请求 我现在可以让它这样做 下一步是创建一个
  • 使用 Python MoviePY 连接视频太慢

    我正在使用 MoviePY 加入 50 多个或更多 1 2 3 分钟的视频 但它只给了我 20 个小时 尽管我有 64 GB 内存 i7 和 GTX 670 虽然不是顶级但还算合理 无论如何我可以加快这个过程吗 padding 10 pad
  • 解释 dumpsys cpuinfo

    我正在寻找 android shell 中命令 dumpsys cpuinfo 结果的解释 dumpsys cpuinfo Load 17 78 16 97 16 29 CPU usage from 35983ms to 21604ms a
  • 跨多个页面保留提供程序数据不起作用

    我在用着Provider在我的 flutter 应用程序中 当我进入新页面时 提供给Provider第 1 页的内容无法在第 2 页中访问 我所理解的方式Provider有效的一点是 有一个中心位置可以存储所有数据 并且可以在应用程序中的任
  • 低选择性色谱柱的索引和替代方案

    可用于在低选择性列上选择记录的策略范围有哪些 一个示例可能是订单表 多年来 您在其中建立了大量已完成的订单 但通常需要选择活动订单 订单可能会经历一个生命周期 例如下单 库存分配 从仓库挑选 发送给客户 开具发票和付款 订单还可能被取消 保
  • 自动化 GDB 调试会话的最佳方法是什么?

    GDB 是否有内置的脚本机制 我应该编写一个 Expect 脚本 还是有更好的解决方案 我每次都会发送相同的命令序列 并将每个命令的输出保存到一个文件中 很可能使用 GDB 的内置日志记录机制 除非有人有更好的主意 基本上 在这个例子中 我
  • SQL中什么时候需要给表名起别名?

    我注意到 在使用多个 JOIN 进行查询时 除非为其中一个表名指定一个别名 否则我的查询不起作用 这是一个简单的例子来解释这一点 This doesn t work SELECT subject from items join purcha