Mysql 隨機獲得表的幾條記錄

在做博客文章詳情的時候,有一個拓展閱讀的功能:

想法一:根據當前文章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); ;
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章