2015-06-27 204 views
0

我正在MySQL中編寫查詢,它已向我提出質疑。這是情況;使用另一列的最大值選擇列的最大值

我們假設我有一張名爲'status'的表格,它保存了類似電視節目的數據;

+---------+---------+---------+---------+ 
| id | season | episode | channel | 
+---------+---------+---------+---------+ 
| 1  | 2 | 10 | a | 
| 1  | 3 | 2 | b | 
| 1  | 2 | 9 | c | 
| 1  | 3 | 1 | d | 
| 1  | 3 | 2 | e | 
+---------+---------+---------+---------+ 

我想檢索包含上個賽季最後發行的劇集的行。根據上面的表格,我希望這樣的

+---------+---------+---------+ 
| season | episode | channel | 
+---------+---------+---------+ 
| 3 | 2 | b | 
| 3 | 2 | e | 
+---------+---------+---------+ 

賽季列的最大值爲3。在這種情況下的結果,我已經檢索到有情節列的最大值的行,其中季等於3.我寫了一個查詢,它給出了預期的結果,但我不認爲這是一個合適的查詢。我如何改進下面的查詢?如果需要,我可以添加額外信息或提供更多示例。

SELECT `season`, 
     `episode`, 
     `channel` 
FROM `status` 
WHERE `tvseriesid` = 1 
     AND `season` = (SELECT Max(season) 
         FROM `status` 
         WHERE `tvseriesid` = 1) 
     AND `episode` = (SELECT Max(episode) 
         FROM `status` 
         WHERE `tvseriesid` = 1 
           AND `season` = (SELECT Max(season) 
               FROM `status` 
               WHERE `tvseriesid` = 1)) 

回答

1

這是一種將所有信息放在一行的方法。不過,它有點簡單:

select season, episode, group_concat(channel) 
from status 
where tvseriesid = 1 
group by season, episode 
order by season desc, episode desc 
limit 1; 
+0

關鍵是獲取包含正確信息的通道列表。這很簡單,並給出了我的意圖。 –