首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个表更新新创建的表- SQL

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

Stack Overflow用户
提问于 2018-07-13 11:53:45
回答 2查看 57关注 0票数 0

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

我有三个名为的表;

代码语言:javascript
复制
 TableA:

 id      Name    Section    c_status

 1a      aika    Section1   Active
 2s                         Inactive

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

代码语言:javascript
复制
  TableB:

  id     PR_id     Name     Section    

  111    2s      laika     Section2   
  222    2s      Bes       Section3 

用于创建TableC的查询

代码语言:javascript
复制
 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);

输出

代码语言:javascript
复制
TableC

id   Name   Section     c_status

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-07-13 12:04:20

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

代码语言:javascript
复制
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中。

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

代码语言:javascript
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2018-07-13 19:15:42

为此,我建议使用View

首先,您应该删除您创建的表

代码语言:javascript
复制
DROP TABLE IF EXISTS TableC;

然后创建一个视图

代码语言:javascript
复制
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

代码语言:javascript
复制
SELECT * FROM TableC

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

代码语言:javascript
复制
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
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51317409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档