问题标签 [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.
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 关系看起来还不错。
在过去的几个小时里,我已经绕着房子转了一圈,这让我发疯了。在短期内,我有需要处理的数据,但我将不得不在数据库的其他副本上重复此过程,并且希望通过脚本等以标准的可重复方式执行此操作,而不是手动破解。 ..
mysql - MYSQL 插入选择过滤字段
我必须在 table1 中为 table2 中找到的每一行插入一个新行。问题是 table2 中的 select 返回的字段多于插入所需的字段,但在 select 的 where 子句中很有用。
此查询根据他们的 (shops) 范围(在表 stores 中定义)向用户显示周围的所有商店
现在我必须将这些结果放在具有这种结构的表中
我不知道该怎么做,你能帮帮我吗?
mysql - MySQL - INSERT INTO table SELECT WHERE field IN (subquery) - 使用 IN 使事情变得非常缓慢,正确的做法是什么?
我有一个在表中插入数据的查询,从另一个表中检索数据,WHERE 条件指定第一个表中的所有记录:
实际上,对于 table_a中的每一个field_x
,我想选择所有field_x
并 field_y
从中选择table_b
,然后通过插入所有返回的行来更新 table_a;我已经知道在子查询中使用 IN 是很慢的。我不确定这是正确的方法,考虑到它也是超慢的,而且我也在问自己这种方法是否完全错误。这里有没有 SQL 专家可以帮助并解决我的问题解决问题的正确方法?
sql - 多选插入
我有一个返回一些 ora-01427 错误的 SQL 请求:
单行子查询返回多于一行
问题是,我需要两个硬编码值,我需要一个仅返回一行的选择值,并且我想对第二个选择返回的每一行执行此操作。
如果我只有一个选择,我觉得这个查询会起作用。有没有办法在 INSERT 中执行多个 SELECT ?语法是什么?
编辑: my_table 和 some_table 实际上是同一张表,很抱歉一开始不清楚,实际上,我需要 value0 是唯一的,所以它需要每次都检索最大的 id,不仅仅是在插入之前,而是每次新的行被插入。
mysql - MySQL插入选择
我正在尝试在表中插入一行,该表有 3 个外键。为了获得这些键,我有“独特的”要搜索的字段。
sql
我在 JAVA 中构建的查询:
这是我得到的错误:
感谢您的帮助:D
解决方案
根据 Gordon Linoff 的回答:
优雅多了!
mysql - 使用 WHERE 和 AND 插入,错误代码:1241。操作数应包含 1 列
得到一个错误说:Error Code: 1241. Operand should contain 1 column(s)
对此有什么帮助吗?似乎没有语法错误。
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”?我正在使用甲骨文。
mysql - 如果新行不存在,则添加新行并获取新 ID - MySQL
我有一张桌子
我希望用户能够添加新名称。但如果name
已经存在,我不想再次添加它,并获取已经存在的名称的id
. 如果名字不存在我想要new id
的new name
我尝试了很多查询,但没有一个有效。这就是为什么我不打算在这里写它们的原因。
感谢帮助。
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 有行,其他两个表是空的
如果我不清楚这里解释问题,请告诉我。
php - 无法使用 php mysql 准备好的语句插入 Select 语句
谁能帮我查询mysql。我正在尝试使用插入选择语句插入多行。
我认为问题是因为我希望这里所有插入的 order_id 都相同,尽管我不确定。
以前我试图在选择语句块中运行它失败。
我在stackoverflow上查了很多,但我想我对数据库查询不是那么精通,所以如果有人能帮我解决这个问题,我将不胜感激。