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

ACCESS / SQL:如何同时插入INTO / UPDATE?

宰父君昊
2023-03-14
问题内容

这是我的情况。首先,我不在关系数据库上工作,我只是将访问作为一种简单的方式来处理数据。目前,我有很多桌子。
一个主表,我们称其为MAIN,另外约10个表,我们可以称其为X1,X2,X3等。X1表包含具有X1属性的项目。X2表包含具有X2属性的项目,依此类推。

所有Xx表都具有相同的字段。MAIN表也具有相同的字段,此外还有布尔值X1,X2等。

我想做的事:

我想用来自Xx表的数据来提供MAIN表。
事实是,可能存在具有多个属性的项目,因此它们可以出现在例如X1,X2,X5中。

因此,我首先尝试运行此命令:

UPDATE MAIN
SET itemnumber = X1.itemnumber, x1 = "true";

但它没有任何作用。现在,我认为这只是合乎逻辑的,因为MAIN表中还没有任何记录。

无论如何,我可以写什么样的查询来做到这一点:
如果表X1的记录在MAIN中尚不存在,请将其添加并将X1字段设置为true。
如果MAIN中已经存在X1的记录,请对其进行更新并将X1字段设置为true。

(然后,我将对其进行更新以在我拥有的每个X表上运行。)

我正在考虑INSERT INTO,但是我不想覆盖已经存在的数据或产生错误(我对这一切都不了解很多。

预先感谢任何可以提供提示的人。

编辑1
我以为我会首先尝试将Xx表中的所有数据插入到MAIN表中(它们具有相同的结构)

所以我首先尝试了这个:

INSERT INTO MAIN.itemnumber
(select X1.itemnumber from X1
UNION ALL
select X2.itemnumber from X2)

在一个字段上尝试了一下,看看它是否有效,但是没有:/

我确定一旦添加了X表中的所有数据,然后为每个Xx表运行了带有WHERE EXISTS的UPDATE,并将相应的Xx属性设置为true,就可以了。

但是我什至很难做一些“简单”的事情,就像将几个表中的数据合并到一个表中一样。


问题答案:

这是我在此期间使用的替代解决方案:

INSERT INTO MAIN
SELECT X1.itemnumber AS itemnumber
FROM X1
WHERE not exists (select itemnumber
from MAIN
where MAIN.itemnumber = X1.itemnumber);

对每个Xx表重复此操作。照顾重复。

然后,添加属性:

UPDATE MAIN SET X1 = true
WHERE exists (select *
from X1
where X1.itemnumber = MAIN.itemnumber);

对每个Xx表重复此操作。

可能不是最有效的方法(实际上必须编辑查询24次…),
但是,它确实有效…

现在,如果有人可以一口气做到这一点…



 类似资料:
  • 问题内容: 我只是对某事感到好奇。让我说我有一个表,我将更新该值,然后将其删除,然后插入新的1。如果我以这种方式编写代码,这将非常容易: 但是,如果使用“ update”语句,它将更加容易。但我的问题是,有可能同时完成这3个步骤吗? 问题答案: 引用Oracle事务处理语句文档: 事务是一个逻辑的 原子工作单元 ,包含一个或多个SQL语句。事务对SQL语句进行分组,以使它们要么全部提交(这意味着它

  • 问题内容: INSERT INTO EMP_1 (EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE) VALUES (‘101’, ‘News’, ‘John’, ‘G’, ‘08-Nov-00’, ‘502’), (‘102’, ‘Senior’, ‘David’, ‘H’, ‘12-Jul-89’, ‘501’

  • 主要内容:语法,示例,使用一个表的数据填充另一个表SQL  INSERT INTO 语句用于向表中插入新的数据行。 语法 INSERT INTO 语句有两种基本的用法。 1) 按指定的列插入数据,语法如下: INSERT INTO table_name (column1, column2, column3,...columnN)  VALUES (value1, value2, value3,...valueN); column1, column

  • 问题内容: 我想知道是否有可能在SQL代码的CASE语句中包含INSERT INTO语句。 这是我要执行的操作的粗略伪代码: 问题答案: 您将需要用语句代替。大概是这样的(不确定db2的语法):

  • 问题内容: 我试图加快我的代码的速度,瓶颈似乎是通过ODBC从外部Access到Jet MDB的单独插入语句。我需要一次插入100行,并且必须重复多次。 是否可以使用SQL代码在表中插入多行?这是我尝试过的一些方法,但是它们都不起作用。有什么建议? 问题答案: 我在R(我正在使用的软件)中找到了一个优雅的解决方案。RODBC软件包具有函数sqlSave,该函数允许一次将整个data.frame追加

  • 问题内容: 我的数据库包含三个表叫,和。链接表仅包含两列,即对象记录的标识和数据记录的标识。 我想从链接到一个给定对象标识的位置复制数据,并在不同的给定对象标识中插入相应的记录。 我 可以 通过选择一个表变量,并为每次迭代进行两次插入来循环执行此操作。 这是最好的方法吗? 编辑 :我想避免循环的原因有两个,第一个是我很懒,并且循环/临时表需要更多的代码,更多的代码意味着有更多的地方出错,第二个原因