2015-02-17 80 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)