从两个表更新新创建的表 - SQL

     2023-03-22     254

关键词:

【中文标题】从两个表更新新创建的表 - SQL【英文标题】:Updating New Created Tables From Two Tables - SQL 【发布时间】:2018-07-13 03:53:45 【问题描述】:

我是 sql 新手 我正在为我的数据库使用 myphpadmin 我正在尝试从两个不同的表 TableA 和 Tableb 更新名为 TableC 的新创建的表。我确实合并了列中具有共同值的两个表,并为我的项目创建了一个数据库。但是,当我从 TableA 和 Tableb 更新数据时,TableC 中的数据没有更新。我正在寻找一种方法,如果我更新表 A 和表 B,表 C 也将更新,这可能在 SQL 中吗?我真的很感激任何建议或帮助。提前致谢。

我有三个名为的表;

 TableA:

 id      Name    Section    c_status

 1a      aika    Section1   Active
 2s                         Inactive

============================================

  TableB:

  id     PR_id     Name     Section    

  111    2s      laika     Section2   
  222    2s      Bes       Section3 

用于创建 TableC 的查询

 CREATE TABLE TableC(SELECT * FROM TableA WHERE Name != ''
 UNION
 SELECT TableA.id, TableB.Name, TableB.Section, TableA.c_status FROM TableA 
 INNER JOIN TableB ON TableA.id = TableB.PR_id);

输出

TableC

id   Name   Section     c_status

1a   aika   Section1    Active
2s   laika  Section2    Inctive
2s   Bes    Section3    Inctive

如果我在 TableA 和 TableB 中更新或添加数据,则 TableC 不会更新。 我真的很感激建议。谢谢

【问题讨论】:

所以,你只是想把查询结果放到新表中? 您应该在每次需要更新时使用 CREATE TABLE 查询创建 tableC(不要忘记先删除它),或者您应该使用视图 (w3schools.com/sql/sql_view.asp) 创建 tableC,它会自动每当在调用 tableC 的 SELECT 查询中调用它时都会更新自身 我怀疑您的第三张表应该是 view 而不是 table。然后它会在底层表发生变化时自动“更新”。 @GordonLinoff 正是我的观点 :) ***.com/a/51323873/9006027 【参考方案1】:

如果TableATableB 有任何变化,我认为TableC 不会自动更新。但是,您可以尝试使用此解决方法代码。

TRUNCATE TableC;

INSERT INTO TableC(SELECT * FROM TableA WHERE Name != ''
UNION
SELECT TableA.id, TableB.Name, TableB.Section, TableA.c_status FROM TableA 
INNER JOIN TableB ON TableA.id = TableB.PR_id);

首先,清空TableC 以防止重复。您可以将查询结果放在TableC 中,一旦为空即可。

如果上面的查询不起作用,你可以使用这个。

TRUNCATE TableC;

INSERT INTO TableC(SELECT * FROM TableA WHERE Name != '');
INSERT INTO TableC(
SELECT TableA.id, TableB.Name, TableB.Section, TableA.c_status FROM TableA 
INNER JOIN TableB ON TableA.id = TableB.PR_id);

【讨论】:

感谢您的帮助,但在 union 附近出现错误正确的 sql 语法 非常感谢您的帮助我使用了您建议的第二个代码,但我得到了 eror trancate column id 来自TRUNCATE?【参考方案2】:

我建议为此使用View

首先你应该删除你制作的表格

DROP TABLE IF EXISTS TableC;

然后创建一个视图

CREATE VIEW TableC AS (
SELECT * FROM TableA WHERE Name != ''
UNION
SELECT TableA.id, TableB.Name, TableB.Section, TableA.c_status FROM TableA 
INNER JOIN TableB ON TableA.id = TableB.PR_id
);

创建视图后,您将始终根据 TableA 和 TableB 更新 TableC

SELECT * FROM TableC

如果你不能使用 View 那么你可以在使用 TableC 之前调用下面的代码块

DROP TABLE IF EXISTS TableC;
CREATE TABLE TableC AS (
SELECT * FROM TableA WHERE Name != ''
UNION
SELECT TableA.id, TableB.Name, TableB.Section, TableA.c_status FROM TableA 
INNER JOIN TableB ON TableA.id = TableB.PR_id
);

【讨论】:

使用新列更新 sql 表

】使用新列更新sql表【英文标题】:Updatingasqltablewithnewcolumn【发布时间】:2011-11-2718:12:57【问题描述】:我正在使用mysql,并且我有一个包含以下列的表:postid、userid、datestamp我想创建一个名为“条目”的新列,根据日期戳按时... 查看详情

SQL 创建触发器以在特定条件下更新表

】SQL创建触发器以在特定条件下更新表【英文标题】:SQLCreateTriggertoUpdateTableundercertainconditions【发布时间】:2021-12-1307:16:45【问题描述】:我想创建一个触发器,当满足新表插入的特定条件时,插入的表和相应的表都会更新。我... 查看详情

SQL - 从两个不同的表返回数据

】SQL-从两个不同的表返回数据【英文标题】:SQL-Returndatafromtwodiffernttables【发布时间】:2016-11-1218:11:34【问题描述】:我有两个表BOOKINGS和WORKERS。基本上有一个工人的桌子,还有一个桌子来跟踪工人在一个时间框架内必须做什么... 查看详情

如何从matlab中的表更新sql数据库中的整个表

】如何从matlab中的表更新sql数据库中的整个表【英文标题】:Howtoupdateentiretableinasqldatabasefromatableinmatlab【发布时间】:2019-02-1423:28:10【问题描述】:我有一个在matlab中连接到的sql数据库,用于将表加载到我的数据库中。但是,我... 查看详情

通过查找另外两个表来更新用户 ID

】通过查找另外两个表来更新用户ID【英文标题】:Updateuseridbylookinguptwoothertables【发布时间】:2022-01-0906:10:48【问题描述】:我有一个不知道如何解决的表/sql问题。我需要使用订单ID更新/创建用户ID表。因此,我必须通过在旧列... 查看详情

SQL Server,如何从用户定义的表类型中删除更新元素?

】SQLServer,如何从用户定义的表类型中删除更新元素?【英文标题】:SQLServer,HowtoremoveupdateselementsfromUser-DefinedTableType?【发布时间】:2012-03-2000:30:55【问题描述】:我有一个用户定义的表类型,比如说@TTdbo.IntTypereadonly,IntType是一... 查看详情

SQL - 从单列到两列的所有日期组合

...一个名为“数据”的SQL表,日期在第一列,第二列是每天更新的数值。我想根据第二列中的值查看某些日期,并创建一个新表,将所有日期组合显示为两列,包括计算的天数差异列。创建的表需要随着“数据”表的更新而自动更... 查看详情

SQL 脚本:使用另一个以 ID 为轴的表更新列

...ingonanID【发布时间】:2014-11-2512:22:38【问题描述】:我有两个SQLServer表:ORDERS和DELIVERIES。我想用来自DELIVERIES的值更新ORDERS表。ORDERSPK(OrderID)对两个表都是通用的。另外,我想将操作限制为特定的Cus 查看详情

如何更新引用重复记录的表?

...erecords?【发布时间】:2021-03-2803:12:37【问题描述】:我有两个SQL表。一个人从另一个存储模块列表及其ID的表中获取参考值。但这些描述并不是唯一的。我正在尝试删除表A的重复项,但我不确定如何更新表B以仅引用单个值。例... 查看详情

创建函数以更新 SQL 中的两个表

】创建函数以更新SQL中的两个表【英文标题】:CreatefunctiontoupdatetwotablesinSQL【发布时间】:2019-11-2409:38:24【问题描述】:我有两个表,有不同的列,我必须创建一个函数,当列年份与给定年份匹配时,用第一个表的信息更新第二... 查看详情

鉴于oracle中的表结构相同,如何从tableA更新tableB中数据不相同的行?

...【发布时间】:2015-05-2508:01:50【问题描述】:基本上我有两个几乎有46列的表,现在我想要一些PL/SQL脚 查看详情

请问打开或创建表的sql语句是啥

使用C++与sqlsever编程,需要每天更新一张数据表,表按日期命名,请问打开(找不到表名时)创建的SQL语句怎么写~~~谢谢!创建表的sql语句是:use数据库名称goifexists(select*fromsysobjectswherename='表名')droptable表名--如果表名是关... 查看详情

SQL更新列从一个表到另一个[重复]

...2014-03-1323:10:00【问题描述】:我是SQL的初学者,但是我有两个表,一个是包含歌曲列表的LibraryTable,另一个是名为Playlist的表,我正在使用netbeans编写原型点唱机,我可以将库中的歌曲添加到我的播放列表,我可以增加添加到播... 查看详情

如何在 PL/SQL 中连接两个表而不创建新表

】如何在PL/SQL中连接两个表而不创建新表【英文标题】:HowtojointwotablesinPL/SQLwithoutcreatinganewone【发布时间】:2019-10-1111:37:20【问题描述】:我正在尝试在PL/SQL中加入两个表,但我不想创建另一个表。我想使用“ALTERTABLE”。我想... 查看详情

从一个连接到另一个表 SQL 的表中删除记录

...一张有10,500,000条记录我想在id和version_number字段上加入这两个表,因为这两个表都有这些字段。我希望可以从连接表中删除匹配的记录(从连 查看详情

如何将数据从一个表移动到另一个表并更新外键 (T-SQL 2008)

...-SQL2008)【发布时间】:2017-07-0316:08:31【问题描述】:我有两个存储文件内容的表Blobs和FileContents。两个表具有相同的结构:IdintIDENTITY(1,1),Contentvarbinary(max)N 查看详情

从网站获取数据并更新 SQL Server 2008 R2 表

...新SQLServer2008R2中的表?相关网站每5分钟更新一次,更改两个数字的值。如上所述,我使用的是SQLServer2008R2,如果这很重要,我也有Vi 查看详情

SQL - 对两个表中的两列求和并写入新列

】SQL-对两个表中的两列求和并写入新列【英文标题】:SQL-SUMtwocolumnsfromtwotablesandwriteinnewColumn【发布时间】:2018-03-2219:29:08【问题描述】:我有以下情况需要解决。我有一个包含产品信息的表A,我有一个包含客户购买历史记录的... 查看详情