MySQL将数据从一列移动到另一列,如果该列中已经存在数据


MySQL move data from one column to another column if data already exists in that column

我已经看过关于这个问题的现有答案,但似乎找不到合适的答案,所以:

我有一个数据库填充的php表单,有许多列:

name | latest_figure | previous_figure1 | previous_figure2 | previous_figure3

我可以使用典型的mysql查询更新表,但是如果数据已经存在于该字段中,我需要数据在更新时向右移动。

例如,如果我们有:

name = Lee latest_figure = 80

我现在想用

更新表

name=Lee, latest_figure=85,我想把原来的数字80移到列previous_figure1中。

如果我们再次更新表,并且name=Lee有一个latest_figure=88,我希望85移动到previous_figure1, 80移动到previous_figure2,以此类推。

保存数据的原因是出于图形原因,以显示进度/恶化等。

我认为你应该重写你的表。您的表应该包含:

name |图|时间戳

那么你总是可以通过名字和时间戳来获得数字,这样你就知道哪个是最新的。这比总是创建一个新列要容易。

如果设置了主键,可以尝试使用ON DUPLICATE KEY。

INSERT INTO table (name, latest_figure) VALUES("Lee", 85) ON DUPLICATE KEY UPDATE previous_figure3 = previous_figure2, previous_figure2 = previous_figure1, previous_figure1 = latest_figure, latest_figure = 85;

希望有帮助