我是sql的新手,我正在使用myphpadmin作为我的数据库,我正在尝试从两个不同的表,即TableA和Tableb,更新名为TableC的新创建的表。我确实合并了列中具有公共值的两个表,并为我的项目创建了一个数据库。但是,当我从TableA和Tableb更新数据时,TableC中的数据没有更新。我正在寻找一种方法,如果我更新表A和表B,TableC也会更新,这在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不会更新。我真的很感谢你的建议。谢谢
发布于 2018-07-13 12:04:20
如果TableA和TableB有任何变化,我不认为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);发布于 2018-07-13 19:15:42
为此,我建议使用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如果你不能使用视图,那么你可以在使用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
);https://stackoverflow.com/questions/51317409
复制相似问题