当前位置: 首页 > 面试题库 >

在子查询中引用外部查询的表

谭炎彬
2023-03-14
问题内容

是否可以在使用MySQL的子查询中引用外部查询?我知道在 某些 情况下这是可能的:

SELECT *
FROM table t1
WHERE t1.date = (
    SELECT MAX(date)
    FROM table t2
    WHERE t2.id = t1.id
);

但是我想知道这样的事情是否可以工作:

SELECT u.username, c._postCount
FROM User u
INNER JOIN (
    SELECT p.user, COUNT(*) AS _postCount
    FROM Posting p
    --# This is the reference I would need:
    WHERE p.user = u.id
    GROUP BY p.user
) c ON c.user = u.id
WHERE u.joinDate < '2009-10-10';

我知道我可以使用GROUP BY或通过将外部WHERE子句拉入子查询来实现相同目的,但是我需要这样做来自动生成SQL,并且由于各种其他原因,不能使用任何一种替代方法。

更新 :对不起,这个问题引起了一些混乱:第一个查询只是一个可行的示例,以演示我 不需要的 东西。

更新2 :我需要两个u.id = p.user比较:第一个比较在‘2009-10-10’之前加入的用户,而另一个是正确关联表行的连接条件。


问题答案:

我认为这行不通,因为您将派生表“ c”引用为联接的一部分。

但是,您可以只取出WHERE p.user = u.idwhileGROUP BY p.user在派生表中替换为,因为ON c.user = u.id会产生相同的效果。



 类似资料:
  • 问题内容: 我有以下查询,该查询通常可以正常工作,并且应该返回涵盖定义时间范围的所有行(如果没有绝对匹配,则采用最接近的前一行和后一行-在http://www.orafaq.com/node/1834中概述) 但是希望通过引用外部选择来减少两个表的子选择,但是显然它不喜欢它 有没有一种方法可以使查询不选择三个表? 问题答案: 您可以通过联接执行以下操作: 我不是MySQL专家,因此如果需要一些语法

  • 我有两个联合查询,如下所示: 现在,我想在另一个查询中使用此联合。 当我运行它时,我得到ORA-00904:"P"."CUSTOMER_NO":无效的标识符。我需要将h1.customer_no加入到外部查询customer_no。 我看到过一些带有rank的查询,但我不太明白。如何将内部查询与外部查询连接起来? 提前感谢。

  • 我必须计算ARPU(收入/#用户),但我得到了这个错误: 子查询使用外部查询第7行的未分组列“usage_records.date”:WHERE created_at<=date_trunc('day',usage_records.d...^) null

  • 问题内容: 如何在按部分分组的查询中使用子查询? 我使用SQL Server 2008 R2和Delphi 2010 我收到此错误: 像这个查询: 按t1.sen分组 问题答案: 这是真实的方式

  • 问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案

  • 问题内容: 我正在尝试使用UPDATE更新表中一堆行中的列值。问题是我需要使用子查询来导出此列的值,并且它依赖于同一张表。这是查询: 通常,如果老师和学生在两个不同的表中,则mysql不会抱怨。但是由于它们都使用同一个表,因此mysql会发出此错误: 错误1093(HY000):您无法在FROM子句中指定目标表“学生”进行更新 有什么办法可以强制mysql执行更新?我100%肯定from子句不会受