不懂你的问题,想建立一个什么样的视图没有看懂你这条语句
CREATE OR REPLACE VIEW V_2 ( 1,2,3,4
 ) AS SELECT 1,2,3,4 FROM v_1     
WHERE  (1 NOT IN (SELECT 5 FROM V_3) )
的意图

解决方案 »

  1.   

    就是在v_1中找出v_1.1的值不等于v_3.5的值的记录建立一个view。
    原来的sql运行的效率太低了,我想把它优化一下。
      

  2.   

    在 sql server 2000中
    用OUTER JOIN或not exists,不要用not in,not in 不能用索引。
    假设id为主键
    select a.*  from  a left outer join b on a.id=b.id  where b.id is null
    select a.*  from  a where not exists (select * from b where a.id=b.id)使用 EXISTS 和 NOT EXISTS 查找交集与差集
    使用 EXISTS 和 NOT EXISTS 引入的子查询可用于两种集合原理的操作:交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。差集包含只属于两个集合中的第一个集合的元素。city 列中 authors 和 publishers 的交集是作者和出版商共同居住的城市的集合。USE pubs
    SELECT DISTINCT city
    FROM authors
    WHERE EXISTS
       (SELECT *
       FROM publishers
       WHERE authors.city = publishers.city)下面是结果集:city
    --------
    Berkeley(1 row(s) affected)当然,该查询可以写成一个简单的联接。USE pubs
    SELECT DISTINCT authors.city
    FROM authors INNER JOIN publishers
    ON authors.city = publishers.citycity 列中 authors 和 publishers 的差集是作者所居住的、但没有出版商居住的所有城市的集合,也就是除 Berkeley 以外的所有城市。USE pubs
    SELECT DISTINCT city
    FROM authors
    WHERE NOT EXISTS
       (SELECT *
       FROM publishers
       WHERE authors.city = publishers.city)该查询也可以写成:USE pubs
    SELECT DISTINCT city
    FROM authors
    WHERE city NOT IN
       (SELECT city 
       FROM publishers)