日期:2014-05-18  浏览次数:20421 次

insert之前判断表是否存在该记录
各位大侠好,小弟又有SQL 的问题来叨扰大家了...

  @ti_id,@proc_id,@mac_id 是随游标变化的变量 
  t_ring 表结构为(sub_ring_id,........),其中sub_ring_id为主键
  t_pmpt_cp表结构为(sub_ring_id,mac_id,proc_id,ti_id)

  ==========================游标循环开始===================================
  @ti_id,@proc_id,@mac_id 被赋值
 
SQL code

      insert into t_pmpt_cp  select sub_ring_id ,@mac_id,,@proc_id,@ti_id  from t_ring where 1 = 1 and ( (select COUNT(1) as num from t_pmpt_cp where sub_ring_id = sub_ring_id and proc_id = @proc_id and mac_id = @mac_id and ti_id = @ti_id  )<1)  





 ==========================游标循环结束===================================

我想在一条语句内实现,插入t_pmpt_cp表之前先判断是否存在当前记录,这种写法似乎有问题... 
大家有建议吗

------解决方案--------------------
SQL code
insert into t_pmpt_cp  select sub_ring_id ,@mac_id,,@proc_id,@ti_id  from t_ring a
where not exists(select 1 form t_pmpt_cp where id=a.sub_ring_id  --假设以id列作比较,如果有ID相同则为存在
     and ( (select COUNT(1) as num from t_pmpt_cp where sub_ring_id = sub_ring_id and proc_id = @proc_id and mac_id = @mac_id and ti_id = @ti_id  )<1)