我需要在MySQL(EC2 RDS MySQL实例)中使用CROSS APPLY。看起来MySQL无法识别CROSS APPLY语法。有谁可以帮助我吗?
这是查询。
SELECT ORD.ID
,ORD.NAME
,ORD.DATE
,ORD_HIST.VALUE
FROM ORD
CROSS APPLY (
SELECT TOP 1 ORD_HISTORY.VALUE
FROM ORD_HISTORY
WHERE ORD.ID = ORD_HISTORY.ID
AND ORD.DATE <= ORD_HISTORY.DATE
ORDER BY ORD_HISTORY.DATE DESC
) ORD_HIST
最接近的 直接 逼近是将相关子查询作为谓词的联接。
SELECT
ORD.ID
,ORD.NAME
,ORD.DATE
,ORD_HISTORY.VALUE
FROM
ORD
INNER JOIN
ORD_HISTORY
ON ORD_HISTORY.<PRIMARY_KEY>
=
(SELECT ORD_HISTORY.<PRIMARY_KEY>
FROM ORD_HISTORY
WHERE ORD.ID = ORD_HISTORY.ID
AND ORD.DATE <= ORD_HISTORY.DATE
ORDER BY ORD_HISTORY.DATE DESC
LIMIT 1
)
但是,根据您的情况,您只需要目标表中的一个字段。这意味着您可以直接在SELECT语句中使用相关子查询。
SELECT
ORD.ID
,ORD.NAME
,ORD.DATE
,(SELECT ORD_HISTORY.VALUE
FROM ORD_HISTORY
WHERE ORD.ID = ORD_HISTORY.ID
AND ORD.DATE <= ORD_HISTORY.DATE
ORDER BY ORD_HISTORY.DATE DESC
LIMIT 1
) AS VALUE
FROM
ORD
本文向大家介绍SQL 交叉应用和外部应用基础,包括了SQL 交叉应用和外部应用基础的使用技巧和注意事项,需要的朋友参考一下 示例 在正确的表达式中使用表值函数时,将使用Apply。 创建一个Department表来保存有关部门的信息。然后创建一个Employee表,其中包含有关雇员的信息。请注意,每个员工都属于一个部门,因此Employee表与Department表具有参照完整性。 第一个查询从D
问题内容: 我想为Entity Framework查询创建一些测试用例,这些查询用例肯定会生成包含CROSS APPLY或OUTER APPLY运算符的SQL命令。 有人可以显示出现这类SQL查询的典型情况吗? 问题答案: 在LINQ 2 SQL中,这总是导致: 在EF中,这可能会失败,也可能会导致(我不知道是哪一个)。这是一个 关联联接,在SQL端需要一个。
问题内容: 我当时使用CROSS APPLY来连接Users和GeoPhone表,并且一切工作都很快,但是现在我在Phone列中有具有NULL值的Users。交叉应用会在最终输出中跳过这些行。所以我切换到OUTER APPLY。但是它的工作速度非常慢(当输出的总行数仅增加1000时,速度要慢15倍以上)。 相对: 我想了解原因。如我所见,执行计划是不同的。但是从理论上讲,我看不到任何可能导致这种速
问题内容: 我正在x86 ubuntu机器上为树莓派ARM目标编写一些代码。我正在使用gcc-linaro- armhf工具链。我能够交叉编译并在pi上运行一些独立程序。现在,我想将代码与外部库(例如ncurses)链接。我该如何实现。 我应该将程序与主机上现有的ncurses lib链接,然后在ARM上运行吗?(我认为这行不通)我是否需要为arm获取lib的源代码或预构建版本,将其放在我的lib
主要内容:笛卡尔积前面所讲的查询语句都是针对一个表的,但是在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。 在 MySQL 中,多表查询主要有交叉连接、内连接和外连接。由于篇幅有限,本节主要讲解交叉连接查询。内连接和外连接将在《 MySQL内连接》和《 MySQL外连接》中讲解。 交叉连接(CROSS JOIN)一般用来返回连接表的笛卡尔积。 本节
问题内容: 使用CROSS APPLY的主要目的是什么? 我已经读过(模糊地通过Internet上的帖子),cross apply如果您要进行分区,则在选择大型数据集时可能会更有效率。(想起分页) 我也知道,CROSS APPLY不需要UDF作为右表。 在大多数INNER JOIN查询(一对多关系)中,我可以将它们重写为use CROSS APPLY,但它们始终会为我提供等效的执行计划。 任何人都