在MySQL中,如何按特定实例出现的次数进行排序?

时间:2013-11-18 22:13:32

标签: mysql sql sql-order-by

我正在MySQL中创建一个View,它将按照租借的次数按降序对电影的标题进行分组。到目前为止,我有这个:

CREATE VIEW number_of_rentals as
SELECT title
FROM film
JOIN inventory ON film.film_id=inventory.film_id
JOIN rental ON inventory.inventory_id=rental.inventory_id;

这给了我这样的结果:

Movie1
电影1 电影1 电影1 Movie2
Movie2
Movie3
Movie3
Movie3

我需要的是显示一个如下所示的列表(不需要显示实际计数):

Movie1(因为它在列表中出现4次)
Movie3(因为它在列表中出现3次)
Movie2(因为它在列表中出现2次)

也就是说,每个单独的电影按其出现在初始列表中的次数的降序排列。我无法弄清楚如何计算每部电影出现的次数。关于如何做到这一点的任何提示?

3 个答案:

答案 0 :(得分:1)

SELECT f.title 
FROM film f
JOIN inventory i ON f.film_id = i.film_id 
JOIN rental r ON i.inventory_id = r.inventory_id
group by f.title
order by count(*) desc

答案 1 :(得分:0)

使用GROUP BY

CREATE VIEW number_of_rentals as
SELECT title, count(*) as rentals
FROM film
JOIN inventory ON film.film_id=inventory.film_id
JOIN rental ON inventory.inventory_id=rental.inventory_id
GROUP BY film.title;

这将为每个标题提供一行的标题和租赁计数。

对于排序顺序的输出

SELECT * 
FROM number_of_rentals
ORDER BY rentals;

答案 2 :(得分:0)

您的视图中的SELECT应该看起来非常相似:

SELECT title, count(title) as rentals
FROM film 
JOIN inventory ON film.film_id=inventory.film_id 
JOIN rental ON inventory.inventory_id=rental.inventory_id
GROUP BY title
ORDER BY count(title) DESC;

这是一个可能会显示类似结果的基本sqlfiddle example。我希望这会有所帮助。