0

我在下面有四个表表名:

  1. 名称_tbl
  2. Sports_tbl
  3. Arts_tbl
  4. 科学_tbl

所有的表都由一个唯一的 id 连接,比如 'name_id',它是表 'Name_tbl' 的主键。现在我将查询一个名称(在 Name_tbl 中)并假设它返回 10 个结果。我必须根据存储在“Sports_tbl、Arts_tbl、Science_tbl”中的平均得分显示 3 个最好的三个结果。那么使用 Mysql 的最佳解决方案是什么。由于第一个实例返回的结果可以达到 100 或更多。

谢谢,任何帮助将不胜感激。

4

1 回答 1

0

试试这个(假设数字存储在每个表的分数列中):

SELECT name_tbl.*, ( (arts_tbl.score+science_tbl.score+sports_tbl.score)/3 ) as avg_score
FROM name_tbl 
LEFT JOIN arts_tbl ON name_tbl.name_id = arts_tbl.name_id 
LEFT JOIN sports_tbl ON name_tbl.name_id = sports_tbl.name_id 
LEFT JOIN science_tbl ON name_tbl.name_id = science_tbl.name_id 
ORDER BY avg_score DESC
LIMIT 3
于 2012-05-28T09:29:32.767 回答