比较并选择三个最佳结果

时间:2012-05-28 08:55:22

标签: mysql database

我有四张桌子 表名如下:

  1. Name_tbl
  2. Sports_tbl
  3. Arts_tbl
  4. Science_tbl
  5. 所有表都通过唯一的id连接,例如'name_id',它是表'Name_tbl'的主键。现在我将查询一个名称(在Name_tbl中)并让我们说它返回10个结果。我必须显示3个最好的结果,这取决于存储在'Sports_tbl,Arts_tbl,Science_tbl'中的得分的平均值。 那么使用Mysql的最佳解决方案是什么呢?由于第一个实例返回的结果可以达到100或更多。

    谢谢,真的很感激任何帮助。

1 个答案:

答案 0 :(得分: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