每小时生成一个随机序列的SQL查询

其实很简单,通过Sin函数和DateDiff函数就可以实现了
SELECT TOP 10 * FROM yt_fanfic_article ORDER BY SIN(id+DATEDIFF(HH,'2000-1-1',GetDate()))
DateDiff(HH,'2000-1-1',GetDate())返回一个值,这个值等于2000年1月1日到现在经历的小时数,显然,这个值每小时会+1
接着加上一个id,这是记录的编号,以增大随机性
最后计算Sin就可以了,得出来的结果是-1到+1之间的一个小数,每一条记录都会有自己的值,而这个值可以根据小时变化,这样就产生随机序列了

该SQL语句用于YT同人栏目首页的随机文章列表
本SQL语句仅在达梦数据库上测试通过,其他数据库没测试过。不过据猜测不能兼容其他数据库,因为似乎任何两个数据库系统的DateDiff函数的参数都不同…… 总之原理就是这样,针对不同的数据库写不同的就行了,当然通用性就……

This entry was posted in 网页开发 and tagged , , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>