问题标签 [derived-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
762223 浏览

mysql - 在没有单独的 CREATE TABLE 的 SELECT 语句中创建临时表

是否可以在不使用 create table 语句并指定每个列类型的情况下从 select 语句创建临时(仅限会话)表?我知道派生表能够做到这一点,但那些是超级临时的(仅限语句),我想重用。

如果我不必编写创建表命令并保持列列表和类型列表匹配,这将节省时间。

0 投票
2 回答
4124 浏览

mysql - MySQL 查询与包含 group by 的派生表的连接,返回最近的相关记录

大家
好,我有一个 MySQL 查询,它在几个派生表上使用连接。其中一个派生查询效果很好,我得到了正确数量的返回行。
但我也试图从相关表中为每一行显示一些额外的信息,这就是我苦苦挣扎的地方。我在这里阅读了其他几个类似问题的问题,但我无法将其应用于我的查询。

这是查询:

我的问题是第二个派生表...LEFT JOIN (...) AS invoices

我正在尝试使用 MAX(invoice_stamp) 获取该公司最近相关发票的 invoice_stamp。这似乎有效,并且确实返回了具有最大 invoice_stamp(Unix 时间戳)值的相关记录。

但我也在尝试获取 MAX() 聚合函数返回的该记录的匹配 invoice_id 和参考字段。但是 invoice_id 和 reference 字段与 MAX() 函数返回的记录不匹配。

任何人都知道如何获取派生表中聚合函数返回的记录的完整详细信息?

0 投票
1 回答
2278 浏览

mysql - MySQL 连接优化:使用派生表和 GROUP BY 改进连接类型

我正在尝试改进执行以下操作的查询:

对于每项工作,将所有成本相加,将发票金额相加,然后计算损益。成本来自几个不同的表,例如 purchaseorders、users_events(工程师分配的时间/他在站点上花费的时间)、使用
的库存等。查询还需要输出一些其他列,例如工作的站点名称,以便列可以排序(在所有这些之后附加一个 ORDER BY)。

我读到这个:http ://dev.mysql.com/doc/refman/5.0/en/group-by-optimization.html但看不到我如何/是否可以在其中应用任何东西。出于测试目的,我尝试在左侧、右侧和中心字段上添加各种索引,但对 EXPLAIN 输出没有任何改进:

生成的行数为 5 x 10^21(低于我开始优化此查询之前的 3 x 10^42!)
目前执行需要 7 秒(低于 26 秒),但我希望不到一秒。

顺便说一句:GROUP BY x ORDER BY NULL 是从子查询中消除不必要的文件排序的好方法!(来自http://www.mysqlperformanceblog.com/2006/09/04/group_concat-useful-group-by-extension/

0 投票
3 回答
868 浏览

mysql - 用派生表替换右连接到左连接

我如何使用左连接编写此查询。由于我使用的框架不支持右连接,我需要重写查询。任何人都可以建议我一个可能的解决方案。

0 投票
1 回答
86 浏览

sql - 为单个条目显示多个类别

我有以下表格:

  1. 具有 ID 列、描述列和类别父 ID 列的类别表如下:

2. 客户表,客户ID和名称如下:

3. Category_Has_Customer,即客户与类别之间的多对多关系。

该类别只有两个级别的深度。

在我的应用程序中,客户可能有零个或多个类别。我想显示客户拥有的部分或全部类别。例如,如果我选择显示所有类别,我希望有下表:

我还应该能够显示某些类别,例如仅标题和信用卡:

p>

我尝试使用 LEFT JOIN 来做到这一点,例如:

但这并没有帮助,因为我得到了重复的行。

0 投票
3 回答
627 浏览

mysql - 基于列值的分组、计数和排除

虽然我在 SQL 或 MySQL 方面不是一个完整的新手,但我注意到还有很多东西需要学习。经过多次尝试、阅读和搜索,我无法理解这一点。如果您能提供任何指点,我将不胜感激。

我已将实际数据和表格简化为以下内容。

有两个表是相关的:Staff 和 Work。它们包含各种项目中的员工数据。

职员:

工作:

目标:

将所有有芝加哥员工的项目与该项目中所有员工的数量进行分组。

预期结果:

所以项目 30 没有列出,因为它的成员不是来自芝加哥。

我下面的查询显然是错误的。它只计算那些来自芝加哥的项目成员,而不是整个项目人员。

0 投票
1 回答
1689 浏览

sql - 派生表多次使用

我需要使用同一个派生表运行 3 个连续查询...我使用的是 MS SQL Server 2008

有没有办法以派生表的方式同时运行 3 个 sql 查询

只执行一次?

我正在使用.net...我想知道是否可以返回 3 个表并使用 3 个表加载数据集。

谢谢

0 投票
3 回答
10319 浏览

sql-server-2005 - SQL 左连接(多重连接条件)

我有两个名为 Check Ins 和 Check Outs 的派生表

签到

退房

我想将签入与签出配对,条件是两个日志都在同一日期并且签出值不能早于签入,所以我想出了这个查询

结果集为

问题是我还想包含没有对应对的日志。这怎么可能?

编辑

我的预期结果集必须包括这样的日志

0 投票
3 回答
9105 浏览

mysql - 如何告诉 MySQL 优化器在派生表上使用索引?

假设您有这样的查询...

可以将多个人分配给给定任务。此查询的目的是为每个任务显示一行,但分配给任务的人员在一列中

现在...假设您在 、 和 上设置了正确tasksusers索引tasks_assigned_userstasksMySQL 优化器在加入派生表时仍然不会使用 TaskID 索引。WTF?!?!?

所以,我的问题是......如何让这个查询使用 tasks_assigned_users.TaskID 上的索引?临时表很蹩脚,所以如果这是唯一的解决方案...... MySQL 优化器是愚蠢的。

使用的索引:

  • 任务
    • 主要 - 任务 ID
  • 用户
    • 主要 - 用户 ID
  • tasks_assigned_users
    • 主要 - (任务 ID,用户 ID)
    • 附加索引 UNIQUE - (UserID,TaskID)

编辑:另外,这个页面说派生表在连接发生之前执行/实现。为什么不重新使用密钥来执行连接呢?

编辑 2: MySQL 优化器不会让您在派生表上放置索引提示(可能是因为派生表上没有索引)

编辑 3:这是一篇非常好的博客文章:http: //venublog.com/2010/03/06/how-to-improve-subqueries-derived-tables-performance/ 请注意,案例 #2 是我的解决方案正在寻找,但目前 MySQL 似乎不支持此功能。:(

编辑 4:刚刚发现:“从 MySQL 5.6.3 开始,优化更有效地处理 FROM 子句中的子查询(即派生表):...在查询执行期间,优化器可能会向派生表添加索引以加快从中检索行的速度。” 看起来很有希望...

0 投票
3 回答
558 浏览

sql - 带有派生表的 SQL 查询 - 性能问题

我有一个包含派生表的 SQL 查询。

派生查询如下所示:

这需要大约 2 分钟才能完成,它会拉回近 300k 行。整个查询(内部有这个)大致相同。如果没有派生表,它只需要不到一秒钟的时间,所以我知道是派生查询导致了问题。

我的问题是,有没有办法提高派生表查询的速度?也许向 StatusHistory 表添加一些索引(我对索引有点垃圾......)?还是使用派生表以外的其他方法?

任何建议表示赞赏。

谢谢