当前位置:  开发笔记 > 后端 > 正文

需要SQL语句专注于表的组合,但条目始终具有唯一ID

如何解决《需要SQL语句专注于表的组合,但条目始终具有唯一ID》经验,为你挑选了0个好方法。

我需要SQL代码来解决表组合问题,如下所述:

表旧数据:表旧

    name     version    status    lastupdate      ID
    A        0.1        on        6/8/2010        1
    B        0.1        on        6/8/2010        2
    C        0.1        on        6/8/2010        3
    D        0.1        on        6/8/2010        4
    E        0.1        on        6/8/2010        5
    F        0.1        on        6/8/2010        6
    G        0.1        on        6/8/2010        7

表新数据:表新

    name     version    status    lastupdate     ID         
    A        0.1        on        6/18/2010                
                                                           #B entry deleted
    C        0.3        on        6/18/2010                #version_updated
    C1       0.1        on        6/18/2010                #new_added
    D        0.1        on        6/18/2010                
    E        0.1        off       6/18/2010                #status_updated
    F        0.1        on        6/18/2010                
    G        0.1        on        6/18/2010                
    H        0.1        on        6/18/2010                #new_added
    H1       0.1        on        6/18/2010                #new_added

新数据和旧日期的区别:

B条目已删除

C条目版本已更新

E条目状态已更新

C1/H/H1条目新添加

我想要的是始终保持旧数据表中的ID - 名称映射关系,无论以后数据如何更改,也就是名称始终具有绑定它的唯一ID号.

如果条目已更新,则更新数据,如果条目是新添加的,则插入表格,然后提供新分配的唯一ID.如果该条目已删除,请删除该条目,稍后不要重复使用该ID.

但是,我只能使用带有简单选择或更新语句的SQL,那么我可能很难编写这样的代码,那么我希望有专业知识的人可以给出方向,不需要有关SQL变体,标准sql代码的详细信息.样品就够了.

提前致谢!

RGS

KC

========我在这里列出了我的草稿sql,但不确定它是否有效,有些专业人士请评论,谢谢!

1.将旧表作为tmp用于商店更新

将表tmp创建为select*from old

2.更新到tmp,其中"name"在旧表和新表中相同

更新tmp其中的名称(从新选择名称)

3.将不同的"名称"(旧的与新的)插入tmp并分配新的ID

插入到tmp(名称版本状态lastupdate ID)set idvar = max(从tmp中选择max(id))+ 1 select*from(select new.name new.version new.status new.lastupdate new.ID from old,new where old.name <> new.name)

4.从tmp表中删除已删除的条目(例如B)

从tmp中删除(选择???)

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有