我有四张桌子 表名如下:
所有表都通过唯一的id连接,例如'name_id',它是表'Name_tbl'的主键。现在我将查询一个名称(在Name_tbl中)并让我们说它返回10个结果。我必须显示3个最好的结果,这取决于存储在'Sports_tbl,Arts_tbl,Science_tbl'中的得分的平均值。 那么使用Mysql的最佳解决方案是什么呢?由于第一个实例返回的结果可以达到100或更多。
谢谢,真的很感激任何帮助。
答案 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