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

时间:2018-07-13 03:53:45

标签: sql phpmyadmin

我是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不会更新。 我非常感谢您的建议。谢谢

2 个答案:

答案 0 :(得分:0)

如果TableCTableA中有任何更改,我认为TableB无法自动更新。但是,您可以尝试使用此替代方法代码。

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);

答案 1 :(得分:0)

我建议为此使用different sheet

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

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
);