我想在合并的查询表中添加一个notes列,这样当我刷新数据时,我在记录上做的注释继续排列。如何添加列来执行此操作?
答案 0 :(得分:2)
请参阅我对这个问题的回答:
Inserting text manually in a custom column and should be visible on refresh of the report
它包含解释性视频的链接:
https://youtu.be/duNYHfvP_8U?list=PLmajzIMNl6yH7MvMLmlgGUW5dOsKg74mQ
答案 1 :(得分:0)
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时存在一行),因此插入将失败:ERROR 1062(23000):键1的重复条目“1”。回想一下,在MySQL中,主键只是一个唯一的键索引名为PRIMARY。任何违反任何唯一索引的数据都会导致同样的问题。
这种情况经常发生。例如,我可能会将一些数据导出到电子表格,将其发送到客户端,客户端可能会更新或添加一些数据并将电子表格返回给我。这是更新数据的一种可怕方式,但出于各种原因,我相信很多读者都发现自己处于类似情况。当我与一个在不同电子表格中有多个版本的数据的客户一起工作时,它发生了很多,我的任务是整理它,标准化格式并将其导入关系数据库。我必须从一个电子表格开始,然后插入和/或更新其他电子表格的差异。
我想要做的是要么只插入新行,要么插入新行并更新已更改的行(取决于方案)。有几种方法可以完成这两项任务。
仅插入新行
如果我只想插入不违反唯一索引的行,我可以:
从t2删除重复的行并插入剩余的所有内容:
delete t2 from t2 inner join t1 on a = d;
insert into t1 select * from t2;
第一个语句删除t2的第一行;第二个插入剩下的两个。这种方法的缺点是它不是事务性的,因为表是MyISAM并且有两个语句。如果没有其他任何表同时更改任何一个表,这可能不是问题。另一个缺点是我刚刚删除了后续查询中可能需要的一些数据。