0

希望标题不要太模糊,但我会解释一下。我对高级查询很陌生,所以不幸的是,这不是一个“我正在尝试这个”,而是一个“我将如何去做这个”类型的问题。

我有一个用户活动表。当他们在网站上做某事时,它会被输入到这个数据库中。不幸的是,跟踪登录的方式发生了变化。所以现在我需要查找每个用户 id 的所有记录,检查每条记录的日期,看看是否有该日期具有特定 id 的记录。

我意识到这听起来令人困惑,所以我将把它分解成我能做到的最好的编程逻辑

  1. 按日期获取 user_id order 的记录列表
  2. 对于每个日期,检查 id 5 是否存在
  3. 如果 id 5 不存在,请告诉我

基本上,我将根据该日期将该 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 缺少 id 5,2012-08-25所以我需要在该日期添加它。user1 没有丢失 id 5,2012-08-26所以我根本不需要插入任何东西。这能澄清什么吗?

4

1 回答 1

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

于 2012-08-29T13:38:57.743 回答