@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 是否数据同步完全?
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK