存储过程中,从一个表a取得数据≥2条数据,根据判断另一个表b是否存在记录,不存在就插入到b,有什么好建议?

解决方案 »

  1.   

    insert into tb
    select * from a
    left join tb t on a.id = b.id 
    where a.id is null类似于这样的
      

  2.   

    通过 INSERT FROM 查询,可以将行从一个表复制到另一个表中或在同一个表内复制。例如,在 titles 表中,可以通过 INSERT FROM 查询,将有关某个出版商所有书籍的信息都复制到另一个表中,并使该表可由该出版商使用。 INSERT FROM 查询类似于生成表查询,不同的是将行复制到现有的表中。提示   还可以通过剪切和粘贴的方法,将行从一个表复制到另一个表中。有关详细信息,请参见在结果窗格中添加新行。创建 INSERT FROM 查询时指定: 将行复制到的数据库表(目的表)。
    从其中复制行的表(源表)。源表或表成为子查询的一部分。如果是在表内进行复制,则源表和目的表相同。
    源表中要进行内容复制的列。
    将数据复制到的目的表中的目标列。
    定义要复制的行的搜索条件。
    排序次序(如果要以特定的顺序对行进行复制)。
    "分组"选项(如果只对汇总信息进行复制)。 
    例如,下面的查询将书名信息从 titles 表复制到一个名为 archivetitles 的存档表中。该查询对属于某个出版商的所有书名的四列内容进行复制:INSERT INTO archivetitles 
       (title_id, title, type, pub_id)
    SELECT title_id, title, type, pub_id
    FROM titles
    WHERE (pub_id = '0766')
    注意   若要将值插入到新行中,请使用 INSERT INTO 查询。可以对行中的选定列或所有列的内容进行复制。在任何一种情况下,所复制的数据都必须与要复制到的行中的列兼容。例如,如果复制某列(如 price 列)的内容,要复制到的行中的列必须接受带小数位数的数字型数据。如果要对整行进行复制,则目的表必须具有和源表的物理位置相同的兼容列。当创建 INSERT FROM 查询时,网格窗格将更改以反映可用于复制数据的选项。添加了一个"追加"列,以允许指定数据应复制到的列。注意   不能撤消执行从中插入查询的操作。作为预防措施,请在执行 INSERT INTO 查询前备份数据。
      

  3.   

    insert into tb
    select * from a where not exists(select 1 from tb b where a.id=b.id)