比如基于a(f1,f2,f3),b(f1,f2,f3)两张表建立视图c(f1,f2,f3),想改变视图c中f1字段中某条记录的显示值,但a,b表中数据不变,应该怎么实现?

解决方案 »

  1.   

    实测数据:CREATE TABLE T110
    (
        f1 VARCHAR2(20),
        f2 NUMBER(4),
        f3 NUMBER(4)
    );INSERT INTO T110 VALUES('01', 1, 1);
    INSERT INTO T110 VALUES('02', 2, 2);CREATE TABLE T111
    (
        f1 VARCHAR2(20),
        f2 NUMBER(4),
        f3 NUMBER(4)
    );INSERT INTO T111 VALUES('03', 3, 3);
    INSERT INTO T111 VALUES('04', 4, 4);CREATE VIEW T110T111 AS 
    SELECT * FROM T110
    UNION
    SELECT f1, f2, f3 + 10
    FROM T111 WHERE f1 = '04'
    UNION
    SELECT * FROM T111 WHERE f1 != '104';
    实测结果:
      

  2.   

    不对吧,应该用 UNION all 吧。
      

  3.   

    union消除重复的记录数,而union all没有去除重复记录数。