MSSQL - OLD到NEW表没有重复

时间:2013-08-21 15:02:23

标签: sql-server unique

我有两张旧表,想要“同步”(或更好地设置新的)两张新表......就像那样:

tbl_old_event_categories(id,title)
tbl_old_events(id,title,cat_id)

tbl_new_event_categories(id,category)
tbl_new_events(event_id,event,category_id)

问题是新表可能已经有了值。所以ID会改变(也许)。因为我不能使用ON DUPLICATE KEY UPDATE。 :(我需要为每条记录单独检查。表格不是唯一的(我不能改变它)。:/

我创建了一个JOIN来获得:
tbl_old_fullevents(事件,类别) //没有ID(整数)只有NAME(字符串)

但如何创建INSERT INTO [tbl_new_events]并检查现有的[event] - 和[category] ​​-value?它类似于:

    IF(tbl_old_fullevents.event IS NOT IN(tbl_new_events.events)) {
     INSERT INTO new_events VALUE(
      NULL, //ID
      tbl_old_fullevents.event,
      IF(tbl_old_fullevents.category IN(new_event_categories.categories)) {
       new_event_categories.id //matched
      }
      ELSE {
       INSERT INTO new_event_categories VALUE (
        NULL, //ID
        old_fullevents.category
       );
       new_event_categories.id //last INSERT-ID
      }
     );
    }

1 个答案:

答案 0 :(得分:1)

使用MERGE语法。有关示例,请参阅http://technet.microsoft.com/en-us/library/bb510625.aspx

你不能使用ON DUPLICATE KEY UPDATE因为那是mysql。