作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几行想要根据时间戳和用户 ID 等进行更新。
所以我的数据看起来像这样
| INT(11) | TIMESTAMP | VARCHAR(50) |
| user id | timestamp | like id |
| 1 | 10/20/2014 10:30 | |
| 1 | 10/20/2014 9:45 | |
| 1 | 10/20/2014 22:30 | |
| 2 | 10/20/2014 9:45 | |
| 3 | 10/20/2014 10:30 | |
| 3 | 10/20/2014 9:45 | |
我希望它像这样更新,其中具有相同用户 ID 和时间戳的行,如果一小时(同一天)内任何其他行中具有相同用户 ID 的另一个条目,则时间戳匹配。
| user id | timestamp | like id |
| 1 | 10/20/2014 10:30 | ASDF-1 |
| 1 | 10/20/2014 9:45 | ASDF-1 |
| 1 | 10/20/2014 11:30 | ASDF-1 |
| 1 | 10/20/2014 21:45 | ADGG-2 |
| 1 | 10/20/2014 22:30 | ADGG-2 |
| 2 | 10/20/2014 9:45 | GFDQ-3 |
| 3 | 10/20/2014 10:30 | QWER-4 |
| 3 | 10/20/2014 9:45 | QWER-4 |
这可以在 MYSQL 更新语句中完成吗?我还没想到办法。
编辑:我还想为每个分组的 like_ids 生成一个随机的 50 个字符的字符串
最佳答案
这是一个返回您想要的结果的 SQL 查询:
select t.userid, t.timestamp,
(@rn := if(@u = userid and @ts <= timestamp + interval 1 hour,
if(@ts := timestamp, @rn, @rn),
if(@u := userid, if(@ts := timestamp, @rn + 1, @rn + 1), @rn + 1)
)
) as likeid
from table t cross join
(select @rn := 0, @u := 0, @ts := 0) vars
order by userid, timestamp;
所有带有嵌套 if
的奇怪语法都是将变量的赋值放入单个语句中。
然后您可以使用它进行更新:
update t join
(select t.userid, t.timestamp,
(@rn := if(@u = userid and @ts <= timestamp + interval 1 hour,
if(@ts := timestamp, @rn, @rn),
if(@u := userid, if(@ts := timestamp, @rn + 1, @rn + 1), @rn + 1)
)
) as likeid
from table t cross join
(select @rn := 0, @u := 0, @ts := 0) vars
order by userid, timestamp
) tnew
on t.userid = tnew.userid and t.timestamp = tnew.timestamp
set t.likeid = tnew.likeid;
关于mysql - 根据时间戳更新类似行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26474550/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!