如何在一個不支持 OVER 函數的數據庫中,找出問答中最高復制量的最佳答案?

如何在一個不支持 OVER 函數的數據庫中,找出問答中最高復制量的最佳答案?

sql難題:尋找問答中最高復制量的最佳答案

在問答系統中,為每個回答標記復制量和點贊量。在糾結一番后,從龐雜的數據表中提取如下查詢結果:

需求:

找出每個回答中復制量最高的答案。如果復制量相同,則選擇點贊量最高的答案。換句話說,按照 copy_count desc, zan_count desc 進行分組。

數據庫版本限制:

數據庫版本為 5.7.25,不支持 over() 函數。

解決方案:

select * from (select * from 圖1 order by copy_count,zan_count) tmp group by tmp.question_id;

原理:

  1. 首先,按照 copy_count 和 zan_count 進行倒序排序。
  2. 然后,對排序后的結果進行分組,以 question_id 為分組鍵。
  3. 由于每組中的第一條記錄是復制量最高且點贊量最高的答案,因此該查詢將返回所需的結果。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享