在做博客文章详情的时候,有一个拓展阅读的功能:
想法一:根据当前文章Id,写死两条链接,Id+1,Id-1,但是文章Id可能被删除,Id不连续,不可取。×
想法二:获得当前文章记录的前一条和后一条记录,好像有点难受,要查询两次。查询两次,可行。√
想法三:直接获取文章表两条随机的记录。一次查询,舒服。√
SELECT * FROM t_article WHERE Id >= ((SELECT MAX(Id) FROM t_article)-(SELECT MIN(Id) FROM t_article)) * RAND() + (SELECT MIN(Id) FROM t_article) LIMIT 2
ArticleService对应的方法
/// <summary> /// 延伸阅读-获取两条随机文章 /// </summary> /// <param name="num"></param> /// <returns></returns> public IEnumerable<ArticleModel> GetRandomArticleList(int num) { string _where = "WHERE Id >= ((SELECT MAX(Id) FROM t_article)-(SELECT MIN(Id) FROM t_article)) * RAND() + (SELECT MIN(Id) FROM t_article) LIMIT "+num; return repository.GetByWhere(_where,null,null,null); ; }