insert into color 
select lv_color,lv_color,lv_color
from color
where color1 = lv_color 
and color2 <> lv_color
and rownum = 1
union
select color1 , lv_color , lv_color
from color
where color2 = lv_color
and color3 <> lv_color

解决方案 »

  1.   

    insert into color ( color1,color2,color3)
    ( select color1,color1,color1 from color where 
       color1 not in ( select color2 from color)
      union
      select color1,color2,color2 from color where 
       color2 not in ( select color3 from color)
     )
      

  2.   

    太感谢了!!仔细理解。。中,但有一个问题,我是菜鸟,弱智的话不要笑我,lastdrop(空杯)的写法好理解,但black_snail大哥的这种写法我没见过,其中:rownum=1的具体有什么作用啊?他在where条件语句是对color1 = lv_color and color2 <> lv_color起限制作用的吗??产生了什么效果呢?因为他们都是用and连接起来的,那么因该不是说在用临时变量lv_color和color1,color2做比较时color1,color2必须在同一行吧?
      

  3.   

    用一条sql语句实现太困难了,用pl/sql吧。
      

  4.   

    rownum=1如果返回的结果为多条记录,那么取第一条记录。
    这样保证不会出现错误。
      

  5.   

    另,lastdrop的语句比较符合题意。