MySQL REPLACE INTO - 更新特定更改

时间:2017-07-14 20:14:00

标签: mysql sql

让我们假设我有一个跟踪客户的电子商务,并根据他们的行为给他们一个分数。

我想创建一个表(分数),为每个特定客户注册此分数,如果不同则更新总分并注册更新日期。

id hash score update_date added_date
1  abc  3     2017-07-11  2017-07-10
2  def  1     2017-07-12  2017-07-11
3  ghi  10    2017-07-13  2017-07-12
4  jkl  7     2017-07-13  2017-07-12

我正在设法创建一个MYSQL语句以完成此任务,并且只有在分数与前一个分数不同时才更新条目,同样基于客户端哈希(而不是id)。

让我们说今天,第二个客户端(hash" def")将分数从1改为15,所有其他客户端保持不变。

我尝试了以下SQL语句作为示例,但是(不知道为什么)有时我的updated_date即使得分相同也会改变,就像第一种情况一样(客户端哈希&#34; abc&#34 ;)分数仍然是3。<​​/ p>

REPLACE INTO scores (id,hash,score,updated_date,added_date) SELECT id,"abc","3","2017-07-14",added_date) WHERE hash="abc" AND score<>"3"

REPLACE INTO scores (id,hash,score,updated_date,added_date) SELECT id,"def","15","2017-07-14",added_date) WHERE hash="def" AND score<>"1"

这是得到的结果:

id hash score update_date added_date
1  abc  3     2017-07-14  2017-07-10
2  def  15     2017-07-14  2017-07-11
3  ghi  10    2017-07-14  2017-07-12
4  jkl  7     2017-07-14  2017-07-12

这是预期的结果:

id hash score update_date added_date
1  abc  3     2017-07-11  2017-07-10
2  def  15    2017-07-14  2017-07-11
3  ghi  10    2017-07-13  2017-07-12
4  jkl  7     2017-07-13  2017-07-12

0 个答案:

没有答案