0

我有两张桌子。

表格1

a -  b  - c-   d  - e
1---b1---c1---d1---e1
2---b2---c2---d2---e2
3---b3---c3---d3---e3
4---b4---c4---d4---e4
5---b5---c5---d5---e5

表2

a----b----c----d----e
1---b2---c2---d2---e2
3---b3---c3---d3---e3
5---b5---c5---d5---e5
6---b6---c6---d6---e6

关于 table1 的一些信息不包含在 table2 中 - 所以我需要将表 2 更新为 table2 的副本。我试过了

UPDATE table1 t1, table2 t2 SET t2.b = t1.b, t2.c = t1.c, t2.d = t1.d 

但 0 行受到影响 - 未进行任何更改。我还能做什么?

4

2 回答 2

3

首先:需要从table1中插入table2中没有出现的那些记录:

INSERT INTO table2(a, b, c, d, e)
SELECT t1.*
FROM table1 AS t1
LEFT JOIN table2 AS t2 ON  t1.a = t2.a
WHERE t2.a IS NULL;

然后UPDATE他们匹配table1:

UPDATE table1 t1
INNER JOIN table2 t2 AS t1.a = t2.a 
SET t2.b = t1.b,
       t2.c = t1.c, 
       t2.d = t1.d,
       t2.e = t2.e;
于 2013-05-20T07:17:27.403 回答
0

如果 table2 仅包含表 1 中的“行”,则可以创建第一个表的视图,而不是创建另一个表:

 CREATE VIEW view_name AS
   SELECT column_name(s)
   FROM table_name
   WHERE condition
于 2013-05-20T07:19:51.310 回答