如题:有一个表,包含2个字段,字段不为空(已经筛选)。表内2个字段若分别按顺序从大到小排列则字段A与字段B内容完全相等。如下:A_name         B_name
             1               3
             2               7
             3               1
             4               8
             5               6
             6               5
             7               2
             8               4先要写一个存储过程实现:选择第一行,当发现B_name列中的字段在A_name列中重复时就删除那一行。如第一行,A_name中1对应B_name中的3,查找发现A_name中有3,则删除3-----1这一行。
在线等,谢谢

解决方案 »

  1.   

    A_name中1对应B_name中的3,查找发现A_name中有3,则删除3-----1这一行。是删除所有a_name=3的行,还是仅删除a_name=3 and b_name=1的行?或者说你表里的a_name,b_name均唯一,且一一对应?
    即1--2必有一行且仅有一行2--1与之对应?
      

  2.   

    CREATE OR REPLACE PROCEDURE proc_test
    IS
    BEGIN   FOR i IN (SELECT b_name FROM test ORDER BY a_name) LOOP
          DELETE test t WHERE t.a_name=i.b_name;
       END LOOP;END proc_test;也没测试数据,你看看是否满足你的要求。
      

  3.   

    delete from 有一个表 t
    where B_name>A_name
    and exists ( select 1 from 有一个表 where A_name=t.B_name)
      

  4.   


    delete from test1 t
    where B_name>A_name
    and exists ( select 1 from test1 where A_name=t.B_name and B_name=t.A_name)
      

  5.   

    delete from 表名 a where A_name>B_name  and  A_name in ( select B_name  from 表名)
    这个可以实现哦