问题标签 [set-based]

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 投票
1 回答
384 浏览

sql-server - SQL Server - 基于集合的瀑布

我有一个表,将数字余额存储在不同的存储桶(存储桶 1、2 和 3)中。在系统中过帐金额时,必须将金额分配到存储桶。事务类型决定了它如何影响存储桶。类型 1、2 和 3 增加各自的桶(无瀑布),而类型 0 使用瀑布减少桶。这意味着类型 0 的数量首先减少桶 1,然后任何剩余减少桶 2,任何剩余减少桶 3。

我目前使用一个游标应用金额,该游标遍历每个发布的金额。由于瀑布,应用金额的顺序是关键。显然,在处理数十万数量时,它的速度相当慢。我想知道是否有一个基于集合的方法来做到这一点?

生成表和记录的代码:

http://pastebin.com/XgKrKkbm

我分配金额的光标如下:

创建和插入脚本位于 PasteBin 中,因为在包含它们时不允许我发布问题(文本长度?)。


围绕瀑布序列的清晰示例至关重要:

从以下内容开始:

申请的两个金额如下

如果金额按顺序应用,结果如下:

然而,金额以相反的顺序应用它们,结果是不正确的:

0 投票
3 回答
91 浏览

mysql - 对 MySQL 表上的重复记录进行编号

有一个具有相似架构的表

试图在 UI 上列出重复的记录。

使用以下查询,我可以检索重复记录并将其显示在 UI 上。

这里 id 为 1 和 4 的记录分别是 3 和 5 的副本。

在 UI 上,用户将单击记录旁边的复选框,相应的重复记录应填充到 UI。为了使事情更容易尝试填充另一个名为 dup_id 的列。使用这个 dup_id 可以过滤来自 UI 的结果,它是 JSON 格式。

如何创建类似于下图的结果集?

0 投票
1 回答
297 浏览

mysql - 将 Foxpro 程序转换为 MySQL 存储过程

我正在使用 Ruby on Rails 和 MySQL 将遗留系统转换为 Web 应用程序。

在将数据层转换为 MySQL 过程时,我遇到的问题很少。

在下面给出一个场景;

这里的 SMA 是另一个有很多条件的函数,它也调用了另一个函数 Lookup。在 Lookup 函数中,它查询一个名为 Checks 的表,Lookup 的参数基于 SMA。

如果您需要更多见解,请参阅讨论中的源代码的 pastebin。http://pastebin.com/raw/Hvx3b8zN

我怎样才能将这种函数转换为 MySQL 程序?

编辑: 我正在寻找已经完成这些类型转换的人对此的见解,从面向过程的语言到确切的基于集合的存储过程。

0 投票
2 回答
56 浏览

sql-server - 存储过程从基于 SET 的查询中获取数据

您好,我正在制作一个存储过程,但在输出带有打印的代码时遇到问题,因为稍后我需要将变量写入临时数据库。这是代码:

现在我想打印这个 SELECT 语句的输出。但是当我这样做时:

print '开票的总金额:' + CONVERT(nvarchar, fmsTotalAmount) + '为此关系的€' print '开票的总金额:' + CONVERT(nvarchar, fmsTotalRelationAmount) + '€ 总计'

但后来我收到以下错误:

在此上下文中不允许使用名称“fmsTotalAmount”。有效表达式是常量、常量表达式和(在某些情况下)变量。不允许使用列名。

在此上下文中不允许使用名称“fmsTotalRelationAmount”。有效表达式是常量、常量表达式和(在某些情况下)变量。不允许使用列名。

在印刷品上。如何从中获取值到变量中?而不是将其作为一行返回。我需要变量。

0 投票
0 回答
334 浏览

oracle - PL/SQL 批处理/游标方法

这是我的情况。有一个包含大约一百万条记录的导入表。我需要根据每条记录中的内容对此表和其他表执行大量更新、插入等。

我可以使用一些基于集合的 SQL 语句来做到这一点。但是,DBA 不希望我使用这种方法,因为很多操作都涉及到经常使用的表,并且他们不希望我一次锁定很多记录。

但是我不想逐行使用光标方法。

我想一次测试一批一百行,如下所示:

向导入的表添加一个 batch_number 字段,并使用每 100 行递增的整数填充它。

然后从 1 到 max batch_number 循环。在那个循环中,我将使用基于 SQL 集合的 ETL 方法,并在每个语句中添加一个 WHERE 子句:WHERE batch_number = loop-number。

这是一种合理的方法还是有更好的替代方法?

0 投票
1 回答
416 浏览

service - Kubernetes 服务何时支持基于集合的选择器?

正如文档所说:

较新的资源,例如 Job、Deployment、Replica Set 和 Daemon Set,也支持基于集合的需求。

为什么资源服务不支持基于集合的需求?什么时候支持?

我想创建一个使用key = v1v2选择pod的服务。我怎样才能实现这个目标?

0 投票
1 回答
47 浏览

sql-server - 如何在我的查询中使用基于集合的 SQL

我设置了一个数据库来存储来自我创建的每个 Web 表单的所有输入,如下所示:

我需要查询此数据库以选择特定于 Web 表单的字段并将它们存储在名为 TSERequests 的单独表中。由于 FormFieldIds 是特定于表单的,因此无需担心 FormId。为了选择我需要的所有数据,我使用了一个简单的查询:

这个查询给了我这样的结果:

RequestRanking 会随着它找到的每个新请求而增加。我知道我可以使用游标或 while 循环遍历每个 RequestRanking 并将每条数据单独设置到新表中的相应字段,但我们都知道这需要多长时间。

我对 SQL 还是很陌生,需要一些帮助。我想知道是否有一种简单有效的方法可以使用基于集合的 SQL 而不是过程 SQL 来执行此操作。

编辑:要清楚,这就是 TSERequests 的样子(我试图插入的表)

此表中的每一列在 FormData 表中都有一个对应的 FormFieldId。例如,FormData 表中的 FormFieldId (191) 对应于 TSERequests 表中的列 (DateCreated)。

0 投票
2 回答
416 浏览

sql - SQL - 人类可读性极强,但我不明白它背后的概念

我似乎以错误的方式思考sql。我总是写一些不起作用的东西。

例如我需要一个变量。所以我认为:

为什么这不起作用...?我在这里使用的是完全限定的参考,所以我想要的值应该很清楚。

这有效......但为什么我必须使用选择?

是否所有内容都必须以 DDL 或 DML 语句之一开头?

其次:我无法逐行调试,因为一条sql语句被视为一步。我可以调试的唯一方法是,如果我选择最里面的子查询并运行它,然后包含下一个外部子查询并运行它,依此类推。

有本地窗口吗?

我听说过基于集合的思维而不是迭代思维,我想即使对于函数式语言我仍然是迭代的......迭代只是从最里面的括号到最外面的括号,并应用于整个集合。但即使在这里我也遇到了麻烦,因为我不知道集合中的哪个值会导致错误。

抱歉,如果这看起来很散漫……我想这只是反映了我对此的感受。我不知道如何从许多小组件构建一个大存储过程......就像在 vba 中一样,我可以调用另一个子例程并确保我需要的变量是全局的。

tldr:需要概念基础/知道当我键入内容并按 F5 时实际发生的情况

0 投票
1 回答
36 浏览

sql-server - 如何查找状态更新以及更新者

我正在处理一个大型 SQL 表、186 列、257899 行,并且还在计数。每次在主数据中更改某些内容时都会添加它。这是shadow表格的一部分,允许我们查看不同字段发生的审计历史记录。

我需要做的是查看谁更新、何时更新以及特定的更新顺序。我需要随时找到某个 3 个用户更新了主表以从

  • 比尔 => 活跃
  • 账单 => 没有账单
  • 活动 => 进行中

我需要收集的是

  1. 正在切换的状态以及切换到的内容(来自上面的列表)
  2. 从以下 3 个用户列表中进行更新的用户名称
  3. 更新日期时间
  4. 索赔号

我正在寻找的用户我不能给出他们的名字,所以我们会选择:

  • 用户 1
  • 用户 2
  • 用户 3

我最近了解了在 SQL 中以基于集合的方式做事,但我还没有完全弄清楚这一点。我知道我可以遍历表格并查找单个用户的任何更新,然后遍历这些更新以查找是否有任何符合上述条件的更新,但我知道与基于集合的批准相比,这会很慢。

我才刚刚开始研究这个,所以我还没有任何代码,但我会在尝试不同的事情时更新这个问题。

我只是不知道如何去弄清楚如何使它成为一个基于集合的问题?

更新

以下是一些示例数据的样子:

创建#TestingData为数据表和#TestingTable影子表,然后填充样本数据。

这是使用上述数据的影子表的样子:

以下是使用上述数据的数据表:

我正在寻找的最终结果是这样的:

这是我尝试过的:

这给了我这个结果:

这不太行。它得到了所有的变化,而不仅仅是我正在寻找的那些。我的基础是Programming SQL in a Set-Based Way

0 投票
2 回答
31 浏览

sql - SQL 显示从未下过订单的任何客户的 ID,仅使用基于集合的操作

使用基于集合的操作找不到任何关于此的内容。不确定我是否走在正确的轨道上,但我对如何做到这一点有两个猜测,但我不确定我是否接近,或者 MINUS 是否是正确的基于集合的操作:

或者

关于如何改进或改变什么的建议?任何帮助表示赞赏。有人还可以解释何时在类似这样的样本上使用 UNION、UNION ALL 或 INTERSECT 吗?

另外,我不确定我是否需要在 2 个不同的表中使用这些。在这个数据库中,其中 2 个表是 CUSTOMER(有 customerid)和 CUSTORDER(有 customerid 和 orderid)。如果您想查看,这是表格值的屏幕截图:https ://imgur.com/a/vHMC4

注意:我必须使用基于集合的操作才能获得全额信用