0

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

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 (event, category) //no IDs (integer) only the NAMEs (string)

但是如何通过检查现有的 [event]- 和 [category]- 值来创建 INSERT INTO [tbl_new_events]?它是这样的:

    如果(tbl_old_fullevents.event 不在(tbl_new_events.events)){
     插入新事件值(
      NULL, //ID
      tbl_old_fullevents.event,
      如果(tbl_old_fullevents.category IN(new_event_categories.categories)){
       new_event_categories.id //匹配
      }
      别的 {
       插入新事件类别值(
        NULL, //ID
        old_fullevents.category
       );
       new_event_categories.id //最后一个 INSERT-ID
      }
     );
    }
4

1 回答 1

1

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

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

于 2013-08-21T15:08:21.970 回答