【发布时间】:2020-05-10 15:14:58
【问题描述】:
我想在合并查询表中添加一个注释列,这样当我刷新数据时,我在记录上所做的注释会继续排列。如何添加一列来执行此操作?
【问题讨论】:
-
问题不清楚。请考虑编写更多示例来说明您要实现的目标,并更具体地说明您一直在尝试使用的工具。
标签: excel powerquery
我想在合并查询表中添加一个注释列,这样当我刷新数据时,我在记录上所做的注释会继续排列。如何添加一列来执行此操作?
【问题讨论】:
标签: excel powerquery
MySQL 提供了几种关于 INSERT 和 UPDATE 的变体,以允许准确地插入和更新所需的数据。这些特性提供了强大的功能和灵活性,使 MySQL 比其他方式更强大。在本文中,我将对每个功能进行概述,帮助您了解如何在其中进行选择,并指出一些需要注意的事项。
设置
我正在使用 MySQL 4.1.15 创建我的示例。我假设 MyISAM 表不支持事务,具有以下示例数据:
create table t1 (
a int not null primary key,
b int not null,
c int not null
) type=MyISAM;
create table t2 (
d int not null primary key,
e int not null,
f int not null
) type=MyISAM;
insert into t1 (a, b, c) values
(1, 2, 3),
(2, 4, 6),
(3, 6, 9);
insert into t2 (d, e, f) values
(1, 1, 1),
(4, 4, 4),
(5, 5, 5);
概述
假设我希望将 t2 中的数据插入 t1。此数据将违反主键(存在列 a 为 1 的行),因此插入将失败:错误 1062 (23000): Duplicate entry '1' for key 1。回想一下,在 MySQL 中,主键只是一个唯一的名为 PRIMARY 的索引。任何违反任何唯一索引的数据都会导致同样的问题。
这种情况经常发生。例如,我可能将一些数据导出到电子表格,将其发送给客户端,客户端可能会更新或添加一些数据并将电子表格返回给我。这是一种糟糕的数据更新方式,但由于种种原因,我相信很多读者都发现自己处于类似的境地。当我与在不同电子表格中拥有多个数据版本的客户合作时,经常会发生这种情况,我的任务是整理所有数据,标准化格式并将其导入关系数据库。我必须从一个电子表格开始,然后插入和/或更新与其他电子表格的差异。
我想要做的是要么只插入新行,要么插入新行并更新更改的行(取决于场景)。有几种方法可以完成这两项任务。
只插入新行
如果我只想插入不会违反唯一索引的行,我可以:
从 t2 中删除重复的行并插入所有剩余的行:
delete t2 from t2 inner join t1 on a = d;
insert into t1 select * from t2;
第一条语句从t2中删除第一行;第二个插入剩余的两个。这种方法的缺点是它不是事务性的,因为表是 MyISAM 并且有两个语句。如果没有其他任何东西同时改变任一表,这可能不是问题。另一个缺点是我只是删除了一些我在后续查询中可能需要的数据。
【讨论】: