如何在MySQL数据库中为UPDATE语句选择最近的条目

时间:2013-12-17 16:09:34

标签: mysql

因此,下面的语句工作正常,但是它将relation.CompletedID值设置为匹配电子邮件的第一个completed.CompletedID值。问题是这是购物车的记录,一个用户可能有多个完成的购物车。目标是将已完成的购物车正确匹配到关系表上的条目,该条目还包含废弃购物车和匹配客户数据的唯一值。

UPDATE relation INNER JOIN completed ON relation.email = completed.email 
SET relation.CompletedID = completed.CompletedID, relation.hasconverted = 
IF(STRCMP(relation.hasbeenmailed,'YES'),'NO','YES')

其余列的过程如下:

  1. 客户来到网站,填写购物车然后离开,触发购物车数据的aysnc帖子到服务器。
  2. 服务器清理和组织发布数据并写入MySQL数据库,在名为abandoned的表中创建一个新条目,并在名为relation的表中创建一个新条目,该表保存关系条目的唯一ID和来自废弃表的匹配购物车ID
  3. Cron作业检查已放弃的表格,其中“hasbeenmailed”列未设置为YES,并为已放弃购物车的客户安排提醒电子邮件。
  4. 客户返回网站并完成购物车。站点将发布数据发送到服务器。
  5. 服务器清理并组织发布数据并写入MySQL数据库,在名为completed的表中创建新条目。然后,服务器执行上面的代码以更新关系以显示转换。
  6. 有四个表格:

    • 放弃(保留每个废弃购物车的唯一条目,唯一的密钥是uuid)
    • customer(每个客户拥有唯一条目,唯一密钥是电子邮件)
    • 已完成(包含每个已完成购物车的唯一条目,无唯一密钥)
    • relation(保存每个其他表的匹配键和电子邮件状态)

    不确定我还应该提供什么,但如果有人需要更多信息我可以编辑这篇文章。感谢您的帮助,这是整个过程中的最后一个错误。

    以下是SQLFiddle的链接:http://sqlfiddle.com/#!2/abdc5/1

    这是一个选择正确条目的语句:

    SELECT * 
    FROM  `relation` 
    WHERE ISNULL( CompletedID ) 
    LIMIT 0 , 30
    

0 个答案:

没有答案