MySQL获取具有记录但缺少特定记录的日期

时间:2012-08-29 12:45:19

标签: mysql

希望标题不是太模糊,但我会解释。我对高级查询很陌生,所以不幸的是,这不是“我正在尝试这个”,而是“我怎么会这样做”这类问题。

我有一个用户活动表。当他们在网站上执行某些操作时,会将其输入此数据库。遗憾的是,跟踪登录的方式发生了变化。所以现在我需要找到每个用户ID的所有记录,检查每条记录的日期,看看是否有一个具有该日期特定ID的记录。

我意识到这听起来令人困惑所以我会将其分解为最佳的编程逻辑

  1. 按日期获取user_id订单的记录列表
  2. 对于每个日期,检查是否存在id 5
  3. 如果id 5不存在,请告诉我
  4. 基本上我会将该id插入到基于该日期不存在该id的表中。

    非常感谢任何帮助。提前谢谢。

    编辑** 我忘了在这里添加一个基本结构。

    id      | user_id      | item_id     | stamp
    ------------------------------------------------------
    1       | user1        | 1           | 2012-08-25
    2       | user1        | 2           | 2012-08-25
    3       | user1        | 3           | 2012-08-25
    4       | user1        | 4           | 2012-08-25
    5       | user1        | 6           | 2012-08-25
    6       | user1        | 7           | 2012-08-25
    7       | user1        | 5           | 2012-08-26
    8       | user1        | 11          | 2012-08-26
    9       | user1        | 13          | 2012-08-26
    

    这就是基本结构。 User1在2012-08-25上缺少ID 5,因此我需要在该日期添加它。 user1在2012-08-26上没有丢失id 5,所以我根本不需要插入任何东西。这有什么用呢?

1 个答案:

答案 0 :(得分:1)

SELECT   user_id, stamp
FROM     my_table
GROUP BY user_id, stamp
HAVING   NOT SUM(item_id=5)

以下是一个包​​含示例数据的SQLFiddle示例:http://sqlfiddle.com/#!2/1ccf5/5