问题标签 [insert-select]

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 回答
647 浏览

sql - 插入表 1 从表 2、表 3 中选择

我在 Windows 7 上使用 SQL Server 2008 R2,并尝试填充表中缺少的行。对于背景,我有

  • 一组“参数”,它们都有一个(字符串)值。这些参数大约有200个

  • 一组“上下文”,我需要为每个参数设置一个值。有几十个这样的上下文。

我在数据库中使用如下三个表对此进行建模:

因此,对于上下文和参数的每个组合,参数值表中都应该有一行。因此,对于 200 个参数和 10 个上下文,我应该期望 ParameterValues 表中有 200x10 = 2000 行。

由于历史原因,我们在某些上下文中缺少一些参数值,我想在 ParameterValues 表中填写所有缺少的值。

我正在尝试使用以下查询:

我不断收到以下错误:

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

我想我只是不理解插入...选择语法等的局限性。任何关于正确处理的建议将不胜感激。

更新:

如果我只是运行“select ... from ... where not exists...”,那么我会显示正确的行数(我知道每个上下文中缺少多少行)。我检查了这些行,它们似乎具有正确的值并且没有重复。

如果我在临时表中进行选择,它可以正常工作,并且我会在该临时表中获得预期的内容。但我不能这样做:

因为这给了我同样的错误。因此,我的参数值表中的结构或 FK 中必须有一些东西破坏了这一点。

使用 SSMS,我可以将这些行直接复制并粘贴到目标表中,并且不会出现错误,因此这些行中的值看起来很好,并且不会破坏任何 FK 等。我刚刚再次检查,其中没有触发器或 SP完全没有这个数据库,而且 FK 关系看起来还不错。

在过去的几个小时里,我已经绕着房子转了一圈,这让我发疯了。在短期内,我有需要处理的数据,但我将不得不在数据库的其他副本上重复此过程,并且希望通过脚本等以标准的可重复方式执行此操作,而不是手动破解。 ..

0 投票
2 回答
360 浏览

mysql - MYSQL 插入选择过滤字段

我必须在 table1 中为 table2 中找到的每一行插入一个新行。问题是 table2 中的 select 返回的字段多于插入所需的字段,但在 select 的 where 子句中很有用。

此查询根据他们的 (shops) 范围(在表 stores 中定义)向用户显示周围的所有商店

现在我必须将这些结果放在具有这种结构的表中

我不知道该怎么做,你能帮帮我吗?

0 投票
1 回答
92 浏览

mysql - MySQL - INSERT INTO table SELECT WHERE field IN (subquery) - 使用 IN 使事情变得非常缓慢,正确的做法是什么?

我有一个在表中插入数据的查询,从另一个表中检索数据,WHERE 条件指定第一个表中的所有记录:

实际上,对于 table_a中的每一个field_x,我想选择所有field_xfield_y从中选择table_b,然后通过插入所有返回的行来更新 table_a;我已经知道在子查询中使用 IN 是很慢的。我不确定这是正确的方法,考虑到它也是超慢的,而且我也在问自己这种方法是否完全错误。这里有没有 SQL 专家可以帮助并解决我的问题解决问题的正确方法?

0 投票
3 回答
6302 浏览

sql - 多选插入

我有一个返回一些 ora-01427 错误的 SQL 请求:

单行子查询返回多于一行

问题是,我需要两个硬编码值,我需要一个仅返回一行的选择值,并且我想对第二个选择返回的每一行执行此操作。

如果我只有一个选择,我觉得这个查询会起作用。有没有办法在 INSERT 中执行多个 SELECT ?语法是什么?

编辑: my_table 和 some_table 实际上是同一张表,很抱歉一开始不清楚,实际上,我需要 value0 是唯一的,所以它需要每次都检索最大的 id,不仅仅是在插入之前,而是每次新的行被插入。

0 投票
3 回答
111 浏览

mysql - MySQL插入选择

我正在尝试在表中插入一行,该表有 3 个外键。为了获得这些键,我有“独特的”要搜索的字段。

sql

我在 JAVA 中构建的查询:

这是我得到的错误:

感谢您的帮助:D

解决方案

根据 Gordon Linoff 的回答:

优雅多了!

0 投票
2 回答
153 浏览

mysql - 使用 WHERE 和 AND 插入,错误代码:1241。操作数应包含 1 列

得到一个错误说:Error Code: 1241. Operand should contain 1 column(s)

对此有什么帮助吗?似乎没有语法错误。

0 投票
1 回答
536 浏览

oracle - 在插入选择块内使用 if-else 条件

我有两个表 elig(mID, startDate, endDate) 和 claim(mID, serviceDate)。我必须检查 serviceDate 是否在 startDate 和 endDate 之间,并插入新表 hasClaim(mID,startDate,endDate,Flag)。如果满足条件,则将标志设置为“Y”,否则设置为“N”。我所做的是:

但这只会返回那些 serviceDate 介于 startDate 和 endDate 之间且标志设置为“Y”的值。如何检索其他值并将标志设置为“N”?我正在使用甲骨文。

0 投票
0 回答
204 浏览

mysql - 如果新行不存在,则添加新行并获取新 ID - MySQL

我有一张桌子

我希望用户能够添加新名称。但如果name已经存在,我不想再次添加它,并获取已经存在的名称的id. 如果名字不存在我想要new idnew name

我尝试了很多查询,但没有一个有效。这就是为什么我不打算在这里写它们的原因。

感谢帮助。

0 投票
0 回答
273 浏览

mysql - Mysql:在子查询中插入语句

我有以下表架构:

表格1 :

ID(PK,自动增量)

姓名

表_2:

表 1_Id

Table3_Id

表3 :

ID(PK,自动增量)

Table_2 以 Table_1 和 Table_3 的 Id 组合作为其主键。我需要在 Table_2 和 Table_3 中为 Table_1 的所有行插入值。我正在尝试类似的东西:

但我的问题是 Table_1 和 Table_3 没有直接关系,并且 Table_2 需要 Table_3 的 Id。是否可以在上述查询中插入并从 table_3 获取新 ID(插入 Table_2)?请建议一种仅使用 mysql 查询来实现此目的的方法。

以下是一些可能会有所帮助的想法。请忽略这里的语法:

(如果内部插入查询将返回新添加的 Id )

为了进一步解释这里是一个粗略的例子:

目前表1有a和b,现在我想在表3中添加新的x和y。然后表2将有2行a,x和b,y。A & x 是通过表 2 链接的。现在只有表 1 有行,其他两个表是空的

如果我不清楚这里解释问题,请告诉我。

0 投票
1 回答
196 浏览

php - 无法使用 php mysql 准备好的语句插入 Select 语句

谁能帮我查询mysql。我正在尝试使用插入选择语句插入多行。

我认为问题是因为我希望这里所有插入的 order_id 都相同,尽管我不确定。

以前我试图在选择语句块中运行它失败。

我在stackoverflow上查了很多,但我想我对数据库查询不是那么精通,所以如果有人能帮我解决这个问题,我将不胜感激。