簡體   English   中英

使用另一列的最大值選擇一列的最大值

[英]Selecting max values of a column using the max value of another column

我在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)) 

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM