我是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不会更新。 我非常感谢您的建议。谢谢
答案 0 :(得分:0)
如果TableC
和TableA
中有任何更改,我认为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
);