【问题标题】:Copying one table to another plus one column dependant of another column将一个表复制到另一个表加上依赖于另一列的一列
【发布时间】:2015-01-15 16:55:15
【问题描述】:

NAME 和 VER 是主键。 我不会写下我想要做什么,而是会画画。

表格来源:

NAME | SOMETHING1 | VER | SOMETHING2 | MODDATIME
john | bob        | 1   | doe        | 18-AUG-14 10.16.08.695221100 AM
john | bob        | 2   | doe        | 19-AUG-14 11.01.42.109826000 AM
john | bob        | 3   | doe        | 09-SEP-14 10.14.15.929342100 AM
john | bob        | 4   | doe        | 10-SEP-14 10.14.15.929342100 AM

表格目标:

NAME | SOMETHING1 | VER | SOMETHING2 | MODDATIME                       | DATEUP
john | bob        | 1   | doe        | 18-AUG-14 10.16.08.695221100 AM | 19-AUG-14 11.01.42.109826000 AM
john | bob        | 2   | doe        | 19-AUG-14 11.01.42.109826000 AM | 09-SEP-14 10.14.15.929342100 AM
john | bob        | 3   | doe        | 09-SEP-14 10.14.15.929342100 AM | 10-SEP-14 10.14.15.929342100 AM
john | bob        | 4   | doe        | 10-SEP-14 10.14.15.929342100 AM | 31-DEC-99 0.0.0.0 AM

谢谢。

【问题讨论】:

  • 那么,你想做什么?
  • 表目标为空。仅设置列。我想将表源复制到表目标,但使用 DATEUP 的特定技巧。
  • “特定技巧”并不像您想象的那么明显。对我来说,DATEUP 看起来像随机数据。
  • 不是随机数据,是来自下一个条目的MODDATIME。

标签: mysql sql insert-into


【解决方案1】:

对同一张表做OUTER JOIN得到结果

SELECT a.NAME,
       a.something,
       a.VER,
       a.something,
       a.MODDATIME,
       Ifnull(b.MODDATIME,'31-DEC-99 0.0.0.0 AM') AS DateUP
FROM   Yourtable a
       LEFT OUTER JOIN Yourtable b
              ON a.NAME = b.NAME
                 AND a.VER = b.VER - 1 

【讨论】:

  • 这假定VER 列中的值是连续的,没有任何间隙。
  • DATUP 列中有 (null)。我还需要在某个点插入以将条目放入目标表中。
  • @Bebeoix - 是的,最后一行将为空。您可以使用IFNULL 获取默认日期或最后日期
猜你喜欢
  • 1970-01-01
  • 2012-07-21
  • 2017-11-02
  • 2010-10-05
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多