@dapeng 之前搞了一个 “历史上的今天” 挖坟贴 , 也就是通过 SQL 查询 在以前在同一天发表的帖子, 听起来很玄乎? 实际上就是以下SQL. 我们先来看看:
1 2 3 4 5 6 7 8 9 | select top 10 * from Comments where FORMAT(created,'MM-dd','en-us') = FORMAT(GetDate(),'MM-dd','en-us') and FORMAT(created,'yyyy','en-us') <> FORMAT(GetDate(),'yyyy','en-us') and title <> '' order by total_payout_value desc |
select top 10 * from Comments where FORMAT(created,'MM-dd','en-us') = FORMAT(GetDate(),'MM-dd','en-us') and FORMAT(created,'yyyy','en-us') <> FORMAT(GetDate(),'yyyy','en-us') and title <> '' order by total_payout_value desc
我们来解释一下:
- select top 10 * 选择前10条记录
- from Comments 查询 STEEMSQL 里的 Comments 表
- FORMAT(created,’MM-dd’,’en-us’) = FORMAT(GetDate(),’MM-dd’,’en-us’) 发表时间的月和日要和今天一样
- FORMAT(created,’yyyy’,’en-us’) <> FORMAT(GetDate(),’yyyy’,’en-us’) 但是又不能是今年.
- title <> ” 标题为空, 也就是限制文章类型(评论的标题一般是空)
- order by total_payout_value desc 按照收益排序
我们还可以其它条件, 比如 categories = ‘cn’ 只查询第一个标签为 cn 的帖子.
@arcange 提出了更好的SQL版本:
1 2 3 4 5 6 7 8 9 10 | SELECT TOP 10 * FROM Comments (NOLOCK) WHERE FORMAT(created,'MM-dd','en-us') = FORMAT(GetDate(),'MM-dd','en-us') AND YEAR(created) <> YEAR(GETUTCDATE()) and AND depth = 0 ORDER BY total_payout_value DESC |
SELECT TOP 10 * FROM Comments (NOLOCK) WHERE FORMAT(created,'MM-dd','en-us') = FORMAT(GetDate(),'MM-dd','en-us') AND YEAR(created) <> YEAR(GETUTCDATE()) and AND depth = 0 ORDER BY total_payout_value DESC
- 一定不要忘记在每个表后面加上 (NOLOCK)
- total_payout_value 没有索引, 所以有可能很慢(排序)
- 使用 GETUTCDATE() 而不是 GETDATE() 因为在数据库中所有时间都是 UTC
- 避免返回所有字段, 因为 Comments 表有很多数据
- (nolock) 很重要因为有可能 SteemSQL 会注入更新的时候会发生死锁. 加上这个关键字能大大的提高效率(避免杀死运行很慢的查询)
英文: SteemSQL Tutorial: How to Get Historic Posts of Today on SteemIt?
STEEM SQL 系列教程
- STEEM SQL 系列教程之 随机返回是怎么实现的?
- STEEM SQL 系列教程之 如何获取最近7天 CN 区用户发贴量, 点赞数和估计收益值?
- STEEM SQL 系列教程之 历史上的今天怎么实现的?
- STEEM SQL 系列教程之 每个月能挣多少?
- STEEM SQL 系列教程之 真的可以恢复删除的文章或评论么?
- STEEM SQL 系列教程之 大鱼们都给谁投票了?
- STEEM SQL 系列教程之 办银行一个月共发了多少利息?
- STEEM SQL 系列教程之 你的哪些好友已经好久没玩STEEM了?
- STEEM SQL 系列教程之 如何使用 ISJSON 和 JSON_VALUE 函数?
- STEEM SQL 系列教程之 如何获取史上赚最多金的作者?
- STEEM SQL 系列教程之 一鸣惊人的作者
- STEEM SQL 系列教程之 如何避免 SQL 注入?
- STEEM SQL 系列教程之 我花了800多 SBD (7000多美元)买赞
- STEEM SQL 系列教程之 怎么样查看 STEEMSQL 是否数据同步完全?
GD Star Rating
loading...
本文一共 491 个汉字, 你数一下对不对.loading...
上一篇: 论PHP是世界上最好的语言 PHP is the best programming language in the world!
下一篇: 逻辑测试系列之三 - SUBT
扫描二维码,分享本文到微信朋友圈
