问题标签 [subquery]

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 投票
4 回答
4900 浏览

sql - SQL:需要根据子查询限制结果集

我遇到了一个相当奇怪的问题。我有以下示例数据可以在 mysql 数据库中使用:

发生的事情是另一个进程(不受我控制)正在接收数据包,并将它们直接存储到数据库中,并带有到达时间的时间戳。数据包应该以突发形式到达...... a,b 将彼此靠近并被索引为 1 和 2,每个数据包包含传输的数据包的“总数”。key 是一个普通的自增主键。

我需要的是一个视图,它将显示最近到达的列表(部分列表,如果不是所有的数据包都已经到达,是可以接受的)。

对于上述查询,理想情况下结果应该只是“f”,但我没有看到这样做的方法。如果我们不能以其他方式得到它,返回“a”和“f”是可以接受的。换句话说,select 语句捕获的少量额外数据并不是什么大问题。对于“f”到达之前的时间段,正确的返回是 c、d 和 e。

我的一般想法是这样的:

正如你们中的一些人可能已经注意到的那样,您不能在 LIMIT 子句中执行子查询(至少对于 mysql)。有没有人有另一种方法来解决这个问题?通过将 JOIN 嵌套到最近 id 的小列表中,可以使上面的查询更加清晰,但这仍然会在子查询中留下 LIMIT 子查询问题。

作为一个两阶段查询,这是相对微不足道的。问题是它需要成为 VIEW 的定义选择语句。

编辑以修复错误的 sql 示例

0 投票
2 回答
14912 浏览

mysql - 我可以在 INSERT 语句中使用子查询吗?

我需要在表中插入一行,其中一个字段值是从另一个表中计算出来的。与其进行两次查询并冒着竞争条件的风险,我认为最好在一个语句中完成所有操作。

...但这不起作用。有没有一种方法可以在一个声明中实现这一目标?如果没有,你的建议是什么?

0 投票
4 回答
203 浏览

sql - Mysql子查询问题

鉴于这两个表:

我怎样才能找到所有在0以上Foo.name没有对应的s Bar,value

例如:

0 投票
8 回答
977 浏览

sql - 加入查询或子查询

开发人员何时使用联接而不是子查询是否有经验法则,或者它们是否相同。

0 投票
4 回答
1202 浏览

sql - 如何从两个表中选择不包含在映射表中的值?

可以说我有以下表格:

  • 顾客
  • 产品
  • 客户产品

有没有办法从客户和产品表中进行选择,其中值不在映射表中?基本上我需要一份他们不拥有的客户和产品的匹配列表。

另一个转折点:我需要为每个产品配对一个客户。所以如果 5 个客户没有产品 A,那么只有查询中的第一个客户应该有产品 A。所以结果看起来像这样:

(假设所有客户都拥有产品 B,并且不止一个客户拥有产品 A、C 和 D)

  1. 客户 1,产品 A
  2. 客户 2,产品 C
  3. 客户 3,产品 D

最后的转折:我需要将此查询作为 SQL Sever 中 UPDATE 语句的一部分运行。所以我需要从第一行取值:

客户 1,产品 A

并将客户记录更新为类似

但如果我能在一个 SQL 语句中完成整个过程,那就太好了。所以我运行了一次查询,它用他们不拥有的产品更新了 1 个客户。希望这不会让您感到困惑!提前致谢!

0 投票
2 回答
12348 浏览

mysql - 在 MySQL 中缓存/重用子查询

我有一个非常复杂的 MySQL 查询,其中包括三次使用相同的子查询。MySQL 会实际运行子查询 3 次吗?(这是一个昂贵的。)如果是这样,我有没有办法告诉 MySQL 保存或缓存结果,所以它不会那样做?我可以将数据保存在一个大数组中,然后将其重新输入 MySQL,但我不想像那样将它移出并放回数据库中。

这是出现 3 次的子查询:

这是查询出现的完整查询的示例:

0 投票
5 回答
2924 浏览

sql - SQL 查询问题(可能的联接/子查询?)

我有两张表(ManagementEmployee)。

管理表跟踪过去几年管理 X 公司的不同管理团队。每个管理团队都有一个ID(即:managementnr),每个团队都有一个CEO(即ceoname)。

员工表跟踪为 X 公司工作的员工(基本上只是他们的姓名和哪个管理团队雇用了他们)

这是SQL代码:

我正在尝试形成一个 SQL 查询来获取雇用最多员工的 managementNR。我试过使用:

但我不断得到:

(我正在使用甲骨文)

经过几个小时的 Google-fu,我终于明白了这个错误的含义,但是我仍然想不出任何其他方式来形成这个查询。我试过使用子查询/连接,但仍然没有。一般来说,我对 SQL 很陌生。如果有人可以提供帮助,我将不胜感激!

感谢您的宝贵时间 =]
--Evan Lestrange

0 投票
10 回答
95691 浏览

sql - CTE 和子查询的区别?

从这篇文章如何在以下过程中使用 ROW_NUMBER?

有两个版本的答案,一个使用 asub-query另一个使用 aCTE来解决相同的问题。

那么,使用 aCTE (Common Table Expression)而不是“子查询”有什么好处(因此,查询实际在做什么更具可读性)

使用CTEover的唯一好处sub-select是我实际上可以sub-query. 当 CTE 用作简单(非递归)CTE 时,这两者之间还有其他区别吗?

0 投票
6 回答
506 浏览

mysql - 什么会导致查询在使用子查询时运行缓慢,但在单独运行时不会?

我有类似以下内容:

问题是查询需要非常非常长的时间(> 2 分钟),但是如果我采用子查询,单独运行它,内爆 id 并将它们插入到主查询中,它的运行时间不到 1 秒,包括数据检索和内爆。

我已经检查了有关方法和密钥的说明是否正确使用并且方式相同。子查询返回的 ID 不超过 200 个。

什么可能导致子查询方法花费这么长时间?

顺便说一句,我知道上面的查询可以用连接编写,但我的查询不能——这只是一个简化版本。

使用 MySQL 5.0.22。

0 投票
3 回答
496 浏览

sql - 是否可以将此查询转换为使用联接而不是子查询?