2015-12-05 230 views
1

我有2張桌子,食物和分數。where子句子查詢使用avg

食品

  • id
  • name
  • picture

得分

  • id
  • score
  • food_id

我要查詢具有高於7平均得分的食物:

select * from food where (select avg(score) from score group by food_id)>=7 

但這返回

錯誤#1242 - 子查詢返回多個1行。

回答

1

試試這個:

select fd.* from food fd 
inner join score sc on fd.id=sc .food_id 
group by food.id 
having avg(sc.score)>=7 
+0

所以關鍵是要加入他們的行列。我認爲它沒有必要,因爲我不從比分表中選擇。非常感謝。 – novusz

1

試試這個

SELECT * FROM food f INNER JOIN score s 
    ON f.id = s.food_id 
    WHERE avg(s.score)>=7 
    GROUP BY f.food_id