Helo everyone。
我是MySQL的初学者,所以我需要一些帮助才能获得请求。 目前,我的请求会返回一个系列信息(身份证,姓名,描述)以及此请求的系列记录的平均值。
SELECT s.* , round( coalesce( avg( note.note ) , 0 ) , 1 ) AS average
FROM serie AS s
LEFT JOIN note ON s.id_serie = note.id_serie
GROUP BY s.id_serie
ORDER BY average DESC
我有这个回应
id_serie name annee description average
1 DBZ 1984 test 3.5
2 Bleach 2001 description2 2.0
我还有一个内容符合意甲类型的表格。此表只有id_genre和id_serie。
我现在想要的是查询我已经拥有的所有数据+ max 3 id_genre系列的请求。
id_serie name annee description average genre1 genre2 genre3
1 DBZ 1984 test 3.5 1 2 9
2 Bleach 2001 description2 2.0 1 NULL NULL
如果可能的话,我也希望如果系列有3种以上的类型,那么这种类型是随机选择的(并且从不为系列选择2次相同的类型)
答案 0 :(得分:0)
这是一种方法。但是,它不是生成三列,而是将结果放在一个列中,其值连接在一起:
SELECT s.* , round( coalesce( avg( n.note ) , 0 ) , 1 ) AS average, g.genres
FROM serie s LEFT JOIN
note n
ON s.id_serie = n.id_serie LEFT JOIN
(select substring_index(group_concat(distinct g.genre order by random()), ',', 3) as genres
from genre g
group by g.id_serie
) g
on g.id_serie = s.id_serie
GROUP BY s.id_serie
ORDER BY average DESC