在第二个表中随机选择3条记录

时间:2014-04-14 20:37:30

标签: mysql

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次相同的类型)

1 个答案:

答案 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