如何制作一个覆盖另一个更大的桌子的小桌子?

时间:2014-04-25 12:49:53

标签: mysql sql

我要两张桌子

table 1       table 2

id a b c       id a  

1  2 3 a       1  r
2  4 5 b       4  d
3  6 7 c       5  s
4  8 9 d
5  1 2 e
6  2 3 f

我希望table2覆盖表1。 以下是我想要的结果

我想创建一个视图表

table override

id a b c

1  r 3 a
2  4 5 b
3  6 7 c
4  d 9 d
5  s 2 e
6  2 3 f

我怎么能这样做? THX

4 个答案:

答案 0 :(得分:1)

试试这个

UPDATE table1 t1 JOIN table2 ON t1.id = t2.id SET t1.a = t2.a      

更改视图:

    CREATE VIEW v AS SELECT t1.id,COALESCE(t2.a,t1.a),b,c FROM  t1 

LEFT JOIN t2 ON t1.id = t2.id;

SQL FIDDLE

答案 1 :(得分:1)

UPDATE table1 
INNER JOIN table2 ON table1.id=table2.id
SET table1.a=table2.a

如果你想查看试试这个:

select t1.id,ifnull(t2.a,t1.a),t1.b from table_1 as t1 left join table_2 as t2 on t2.id=t1.id

创建视图

CREATE VIEW tbl_vw AS SELECT t1.id,COALESCE(t2.a,t1.a),b,c FROM table_1 as t1 left JOIN table_2 as t2 ON t1.id = t2.id ;

Here is a Link for sample

答案 2 :(得分:0)

使用UPDATE和JOIN,如下所示

UPDATE table1 
INNER JOIN table2 ON table1.id=table2.id
SET table1.a=table2.a

答案 3 :(得分:0)

希望这有帮助。抱歉,因为我没有机会参加

select case when t.d is null then t.a else t.d end, t.b, t.c
from
(
    select t1.a a, t1.b b , t1.c c, t2.a d
    from table1 t1 left join table2 t2 on t1.id=t2.id
) t
相关问题