问题标签 [scalar-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.
sql - 为什么在具有多个连接的 WHERE 子句中,子查询的性能要优于文字值?
采取以下查询:
请注意,WHERE
条件是一个标量子查询。运行时会0:54
产生367,853
记录。
但是,如果我将WHERE
子句切换为以下内容:
这以某种方式导致查询运行时跳转到57:33
仍然产生367,853
记录。幕后发生了什么会导致运行时的巨大飞跃?我本来希望子查询版本需要更长的时间,而不是文字整数值。
别名为LI
(last join on the list) 的表似乎是唯一没有在其键上编制索引的表,并且如果我将该表作为连接删除并使用整数,似乎允许查询执行更接近第一个查询值而不是子查询。
SQL 服务器 11
c - 错误:使用了需要标量的结构类型值 for(;*ptr;ptr++)
你能解释一下这个错误背后的原因吗?
错误代码:
在需要标量的情况下使用了结构类型值
for(;*ptr;ptr++)
“以下代码?
为什么我们不允许在 for 循环中使用结构变量?
sql - IN 子句中可以使用的最大标量数是多少?
每当我使用一个小语句时,例如:
它执行得很好......但是如果我执行一个冗长的语句来删除带有这些标量值的 18755 条记录,它会说“max_stack_depth”超出了...... postgresql.conf 中的这个选项已设置为 2MB 并且引发错误的查询不到2MB,只有300kb
注意:表中没有附加触发器
关于其他查询,我注意到的一件事是,当我在 IN 子句中使用单个值时,例如:DELETE FROM c_ordertax WHERE (c_order_id) IN ((183691598),(183691198));
它们没有任何问题,无论查询可能有多长,它都能完美执行......
我目前的选择是:
- 我可以增加“max_stack_depth”值,但它限制为 8MB,增加它会进一步导致问题,并且 postgresql 服务器无法重新启动......它只能正确重新启动选项设置为小于 8MB 的值
- 我可以拆分这些语句,但这可能不是一个优雅的解决方案,这也需要我知道单个语句中可以容纳的最大标量值,如果标量值的字段数增加,那么可以在单个语句中使用可以减少我的恐惧......
所以我的问题是可以在 IN 子句中使用的最大标量值的数量是多少......如果标量值中的字段数量增加,是否有一个公式可用于确定标量值的最大数量可以使用例如:
任何数据库策划者都遇到过这些问题?如果是这样,我该如何解决?
java - 有一个带有计数子列的 Hibernate 实体 - 没有标量子查询
我有一个实体,我希望它具有孩子数量的属性。假设我有这两个表:
我希望 Hibernate 中的父实体具有这样的属性:
从 SQL 的角度来看,这很容易:
简单高效。但是,由于我想将它作为实体的 Hibernate 属性,所以我找到的最接近的是:
然而,在幕后它是作为一个标量子查询执行的,其中对子表的访问是每个父记录的 - 效率非常低(像 Oracle 这样的一些数据库对这些类型的查询进行了一些优化,但我不想依赖于此,与带有 GROUP BY 的 SQL 版本相比,它仍然不是最优的)。
有没有一种休眠方式来解决这个问题?幕后执行的方式与上述 GROUP BY 示例类似?
join - BigQuery - 使用 SELECT from JOIN 进行更新时出现意外结果:匹配零行
第一个问题 StackOverflow,刚刚开始使用 SQL 和 BigQuery。
在 BigQuery 上,我有一个带有一张表的项目:table
.
该表包含:
-一些数据x
, -一些每个条目的
时间戳,-一些对条目进行分区的
组标识符,
-以及一个使用所有值 调用的列。time
group
INTEGER
rank
NULL
我想用来UPDATE
更改这些NULL
值:应该表示基于,以升序排列
rank
的每一行内的排名(对于组中最早记录的,对于以下一行等)group
time
rank=1
x
rank=2
这是我设置查询的方式:
查询执行没有错误,BigQuery 告诉我所有行都已按预期进行了修改。但是当我检查时, 的值rank
仍然是NULL
。
由于我检查了它rankvalue
是否按预期生成,我的猜测是JOIN
语句中存在一些问题。
不过,我已经检查过rank1
它确实继承temp
了id
我创建的所有内容。所以我不明白为什么JOIN
失败。
替代方案:
我尝试了另一种方法来执行此操作:我尝试首先将唯一的行标识符分配给table
,称为id
,然后使用以下查询:
但是这个查询返回一个错误:Scalar subquery produced more than one element
。我不明白为什么,因为我验证了 WITH/SELECT/FROM 子查询返回的行数与table
.
非常感谢任何抬头。
更新:
我尝试了以下方法并且有效:
这是我之前尝试过的第二种选择的修改。问题:它现在是否有效,因为WHERE table.id=rank1.id
选择与正在更新的每个人 table.id
相对应的每个人并将其与对应的人匹配(即,它为 LHS 中的每一行选择 RHS 中的一行),而将返回整个连接表对于正在更新的每个值(即,对于 LHS 中的每一行,RHS 上的多行)?table.rank
rank.id
project.table INNER JOIN rank1 ON table.id=rank1.id
table.rank
sql - 错误:用作表达式的子查询返回多行。PostgreSQL/LOOKER
我正在尝试在 Looker 中执行一个子查询,该查询从人员 ID 等于分配给人员 ID 的人员表中返回受让人姓名
我试图做一个限制1,但这只是为每一行中的人返回第一个值
我希望它返回分配给票证的姓名,做
返回我想要的,但是,由于查看器如何解释 SQL,我需要以这种方式执行子查询
mysql - Mysql:在外部查询中使用where比较运算符针对选择子查询结果
我正在尝试使用基于标量子查询结果的 WHERE 子句。查询在没有 WHERE 子句的情况下正确执行。使用 WHERE 子句,我得到错误代码:1054。“where 子句”中的未知列“available_services”。
如何实现基于子查询结果的过滤?
此外,由于子查询可能非常低效,因此有关如何改进查询的任何建议都会很有用。
sql - 相关标量子查询
我正在使用 SparkSQL。我有下表:
部门:
但是,我无法在 SparkSQL 中成功执行以下查询:
任何人都可以请帮助我可能出错的地方。
谢谢
vb.net - 计算另一个表中的记录以包含在绑定表的结果中
我正在使用 Visual Studio,并且有一个 Access 数据库,其中包含几个相关的表。他们使用默认的拖放绑定使用 WinForms 到自动生成的数据集。
我希望父表在结果中包含一列,其中包含具有该 ID 的相关记录数的计数。如果重要的话,这些表看起来像这样:
我向表适配器添加了一个附加查询(如您从屏幕截图中看到的那样),它完成了它需要做的事情(不包括链接的 ID),认为这是如何做到的。我至少在正确的轨道上吗?查询如下所示:
当然,我需要更改494
为在运行时与相应记录匹配的变量,但是
似乎根本没有预览(参数没有给出值)
所以我也试过
这也没有预览。
但这只是问题的开始。假设我可以让那部分工作,我如何让标量查询的结果为调用查询中的每条记录运行并在数据集中返回,就好像它是该表中的另一个字段一样?