2015-02-17 64 views
-1

所以我想能够显示最昂贵的电影租赁和最便宜的电影租赁。基本上我想显示电影标题及其价格。现在,我能够获得最高和最低的租赁价格与此查询:使用MIN和MAX选择名称 - mysql

SELECT MAX(rental_rate) as MaxRate, MIN(rental_rate) as MinRate 
FROM film; 

但是如何修改上面的查询,以显示关系的电影片名,以他们的利率?

我也曾尝试:

SELECT title (SELECT MAX(rental_rate) FROM film as MaxRate), 
      (SELECT MIN(rental_rate) FROM film as MinRate) 
FROM film; 

但没有奏效。

有什么建议吗?

+0

本质上相同的问题[Mysql的最小值和最大值和相应的“日期”每月](http://stackoverflow.com/questions/9411767/mysql-min-and-max-values-and-corresponding-date-for-each-month),虽然那个有日期而不是标题。 – GolezTrol 2015-02-17 21:47:01

+0

为我工作的替代查询,但此问题已关闭。 选择标题,从膜 其中 (rental_price =(SELECT MAX(rental_price)FROM膜作为MAXRATE)或 rental_price =(SELECT MIN(rental_price)FROM膜作为MinRate))rental_price; sqlFiddle:http://sqlfiddle.com/#!2/0b2eb4/1 – 2015-02-17 22:17:45

回答

2

一个适当的解决方案可以在我的评论中提到的问题被发现,但它有点复杂。我认为另一个更简单的解决方案是ORDER BY费率和使用LIMIT获得1条记录。您可以使用UNION两个类似的查询相结合,以获得最低和最高速度:

(SELECT title, rental_rate 
FROM film 
ORDER BY rental_rate 
LIMIT 1) 
UNION 
(SELECT title, rental_rate 
FROM film 
ORDER BY rental_rate DESC 
LIMIT 1) 

UNION ALL可太习惯,但随后如果表中只包含一个电影,你可以得到相同的标题。

请注意,此查询将返回一个最低速率标题和一个最高速率标题。如果您想要共享最低或最高费率的所有标题,则需要that other solution

0

你想要的是两排,不同的条件,所以将它们分开:

(SELECT title, rental_rate, "most expensive" as which_title 
from film 
ORDER BY rental_rate DESC LIMIT 1) 
UNION ALL 
(SELECT title, rental_rate, "least expensive" from film 
ORDER BY rental_rate ASC LIMIT 1) 

与工作sqlfiddle:http://sqlfiddle.com/#!2/1e290/3

+0

我认为它不那么简单。这个查询为您提供最低和最高费率,以及每个标题的随机标题。 – GolezTrol 2015-02-17 21:48:56

+0

@GolezTrol就是你 – 2015-02-17 21:54:35

0

如果你想率与他们的标题的最小值和最大值,你也可以使用下面的查询:

select title, (SELECT MAX(rental_rate) FROM film) from film 
     where rental_rate=(SELECT MAX(rental_rate) FROM film) 

union 

select title, (SELECT MIN(rental_rate) FROM film) from film 
     where rental_rate=(SELECT MIN(rental_rate) FROM film)