我想插入一条语句,在插入前先通过某字段判断是否存在字段相同的数据,如果存在则删除该数据后插入。如果没有则直接插入。知道应该使用select count(*)判断,可具体应该怎么写?求解··sql

解决方案 »

  1.   

    删除后再插入不就是更新吗可以试试 MERGE INTO语句,有数据则更新,没数据则插入
      

  2.   

    不是,业务要求就是先进行删除后再插入。想问问大家有没有方法写在一个SQL里···
      

  3.   

    select count(*) into 变量 from a,b where a.1=b.1
    if  变量>0 then 
    delete  from a where exists (select 1 from b where a.1=b.1)
    else 
    insert 
    end
      

  4.   

    建议楼主看看merge函数,这是针对的需求的
      

  5.   

    先插入再删除? 如果主键不变,直接用merge into 更省事,像select count等内容oracle都帮你做了
      

  6.   

    oracle 能直接用if else?
      

  7.   


    MERGE INTO PRODUCTS P
    USING NEWPRODUCTS NP
    ON (P.PRODUCT_ID = NP.PRODUCT_ID)
    WHEN MATCHED THEN
      UPDATE
         SET P.PRODUCT_NAME = NP.PRODUCT_NAME, P.CATEGORY = NP.CATEGORY
       WHERE P.CATEGORY = 'DVD'
    WHEN NOT MATCHED THEN
      INSERT
      VALUES
        (NP.PRODUCT_ID, NP.PRODUCT_NAME, NP.CATEGORY) WHERE NP.CATEGORY != 'BOOKS'