【发布时间】:2017-11-07 07:04:56
【问题描述】:
我有一个表,其中包含一些用于特定目的的非规范化数据(不要问),所以它有几百列。有一个主键。
此表每周更新一次,但大多数 id:s 将具有与前一周相同的数据。
现在,我需要将所有记录版本存储在历史表中,即如果第 N 周添加了 id X 的记录,则第 N+1 周没有变化,但有些数据在第 N+2 周和第 N+3 周发生了变化,那么历史记录表应包含三个记录:第 N、N+2 和 N+3 周的记录。
编写适当的insert 查询在技术上很容易,但它会涉及到每一列的比较,所以这将是一个很长的 SQL 查询。我确信它会起作用,但是......
在 MySQL 中是否有任何方法可以比较所有列而无需为每列显式写入 ...or t1.col1 <> t2.col1...? IE。 ...t1.allcolumns <> t2.allcolumns... 之类的,比如一次性比较整行?
我很确定答案是否定的,但是... :-)
【问题讨论】:
-
设计您的架构的人考虑的是电子表格,而不是关系数据库;这就是让你的生活变得悲惨的原因。也许是时候使用EAV schema 重新实现数据库了?
-
它是为了特定目的而需要它是它的方式。我不会讨论它,因为它很长而且离题。
标签: mysql sql sql-insert