当前位置: 首页 > 面试题库 >

从同一表中选择作为插入或更新

东方谦
2023-03-14
问题内容

显然,以下是不正确的。

INSERT INTO `aTable` (`A`,`B`) VALUES((SELECT MAX(`A`) FROM `aTable`)*2),'name');

我得到的价值:

SQL查询:

INSERT INTO `aTable` (`A`, `B` )
VALUES 
(
  (
   SELECT MAX(`A`)
   FROM `aTable`
  ) *2
 , 'name'
)

MySQL说:

1093-您无法在FROM子句中指定目标表’aTable’用于更新

因此,我试图制作一个位图表,每一行对应一个位,并具有一个“ map”值。

要插入表中,我不想执行两个查询,而是想执行一个查询。我应该怎么做?

没有人对此发表评论,但是由于我正在尝试制作位图,因此应该是* 2而不是^ 2,是我的错误,请注意,这就是为什么评论经常说^
2的原因,这是评论者版本中的错误读。


问题答案:

尝试:

insert into aTable select max(a)^2, 'name' from aTable;

或者

insert into aTable select max(a)^2, 'name' from aTable group by B;

如果需要加入,可以执行以下操作:

insert into aTable select max(a)^2, 'name' from aTable, bTable;

我的“服务器版本”是“ 5.0.51b-community-nt MySQL社区版(GPL)”



 类似资料:
  • 问题内容: 我有一个产品对象,它属于某些类别,即经典的多对一关系。 我想插入和更新产品而不预先选择类别。像这样: 要么 是否可以在不选择类别的情况下进行更新和插入?我不想为此使用HQL或直接查询。 问题答案: session.load()专门用于此类情况。以下: 不会打数据库。但是,如果没有提供给定ID的类别,它将在稍后阶段(刷新期间或多或少)引发异常。 使用速度快且没有副作用(级联等)。

  • 问题内容: 我有两个表,具有相同的架构- 我想将test2表中的值插入到test1中,但是如果具有相同主键的行已经存在,请对其进行更新。我知道在mysql中,您可以使用ON DUPLICATE KEY UPDATE做类似的事情- 但是我不知道如何使用另一个表中的SELECT来执行上述查询。我正在寻找的是表格查询- 该查询显然是无效的。如果有人可以从中提出有效的查询,我将不胜感激。 问题答案: 这应

  • 我正在尝试更新 DB2 中的同一表中是否存在(如果不存在)或插入。 我有一个表“V _ OPORNAC”(scheme是SQLDBA),它包含三列,其中有两个主键:IDESTE (PK)、IDEPOZ (PK)、OPONAR 我的情况是,如果IDESTE=123456和IDEPOZ=0的数据(OPONAR)不存在,则插入新行,如果存在,则更新(OPONAR)。我试过这样做: 执行上面的代码,我得到

  • 问题内容: 是否可以在SQL Server中执行以下操作: 我有大量的函数可以返回一值结果,而一个函数可以返回3列。我想将所有这些数据插入表的一行中吗? 我可以看到函数返回多个列可能是个问题吗? 问题答案: 如果所有函数仅返回一行… 如果函数返回的行不止一行,则需要以常规方式将它们连接;带有确定哪个左行连接到哪个右行的谓词。

  • 我正在使用“插入到选择”将记录添加到我的表“SampleTestLimits”中,但它也有一个从同一个表读取的子查询来为我执行计数。 我认为子查询没有看到我的“插入到选择”添加的早期记录。Oracle和SQL Server也是如此。SQL Server的代码如下所示(我的子查询以“选择合并…”开头)。 我有另一个存储过程,在类似的情况下也能工作。 如果有人能告诉我我在做什么是不,我会很感激的。

  • 使用本机SQL我可以选择、修改和将记录插入到这样的表中: 由于ID字段是主键,这一点特别有用。 我想用JOOQ在Java中做同样的事情,但我不知道如何提供修改后的字段值。 这可能吗?如果可能,怎么可能?