【问题标题】:MSSQL - OLD to NEW table without duplicatesMSSQL - OLD 到 NEW 表没有重复
【发布时间】:2013-08-21 15:02:23
【问题描述】:

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

tbl_old_event_categories(ID、标题)
tbl_old_events (id, title, cat_id)

tbl_new_event_categories(id、类别)
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 //last INSERT-ID } ); }

【问题讨论】:

  • 新表是独一无二的吧?如果没有,你就吃饱了。
  • 从您的解释中不清楚您是否有任何值可以实际用来识别记录是否相同(不应该插入)。你想做的事情的模式是微不足道的,但如果你没有唯一的键,那就没什么用了

标签: sql-server unique


【解决方案1】:

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

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

猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 2019-05-03
  • 2018-12-19
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
相关资源
最近更新 更多