我無法正確確定問題的標題。假設每週電影收益的表如下:MySQL - 如何檢索與min/mx返回的值相同的行中的列
MovieName <Varchar(450)>
MovieGross <Decimal(18)>
WeekofYear <Integer>
Year <Integer>
那麼,如何讓頂級grossers的名稱爲今年的每一週,如果我這樣做:
select MovieName , Max(MovieGross) , WeekofYear
from earnings where year = 2010 group by WeekofYear;
那麼顯然查詢不會運行,而
select Max(MovieName) , Max(MovieGross) , WeekofYear
from earnings where year = 2010 group by WeekofYear;
只會給電影開始與最低字母表。是使用group_concat()
,然後substring_index()
這裏唯一的選擇?
select
substring_index(group_concat(MovieName order by MovieGross desc),',',1),
Max(MovieGross) , WeekofYear from earnings where year = 2010
group by WeekofYear ;
似乎笨拙。有沒有更好的方法來實現這一目標?
這個查詢是一貫慢於group_concat/substring_index方法(1.1秒與1.5秒)的表約250,000行匹配的where子句......但它確實看起來更整潔 – Gala101 2010-05-19 11:47:40
感謝您對它進行測試。你碰巧有查詢的解釋計劃和表格創建表嗎?根據指標,我預計它會非常快。 – TheJacobTaylor 2010-05-23 03:51:16