我已經在MySQL以下查詢:GROUP BY訂貨
select territory_id, platform_type_id, p.store_url
from main_itemmaster m
inner join main_iteminstance i on m.id=i.master_id
inner join main_territorypricing p on p.item_id=i.id
inner join main_territorypricingavail a on a.tp_id=p.id
where imdb_url = 'http://imdb.com/title/tt1576422/'
group by platform_type_id
使我有以下幾點:
territory_id platform_type_id store_url
US Amazon http://www.amazon.com/dp/B00EQIHJAG
PT ITUNES https://itunes.apple.com/pt/movie/id582142080
不過,我希望做一個GROUP BY
返回territory_id = 「US」首先如果存在。我會怎麼做?
這是我嘗試的一種方式,看起來很髒,但不工作的MySQL版本,我使用的是:
select * from
(select territory_id, platform_type_id, p.store_url from main_itemmaster m
inner join main_iteminstance i on m.id=i.master_id
inner join main_territorypricing p on p.item_id=i.id
inner join main_territorypricingavail a on a.tp_id=p.id
where imdb_url = 'http://imdb.com/title/tt1576422/'
order by territory_id='us' desc
) x group by platform_type_id
其中給出:
territory_id platform_type_id store_url
US Amazon http://www.amazon.com/dp/B00EQIHJAG
US ITUNES https://itunes.apple.com/us/movie/id582142080
這是正確的結果集我期待得到。
這裏是一個SQL小提琴的鏈接。我將所有數據壓縮到一個表中,以便將注意力集中在GROUP BY語句上:http://sqlfiddle.com/#!9/81c3b6/2/0
您所查詢的是畸形的,因爲'select'列表是用'組by'列不兼容。 –
如果您需要以特定順序返回的行,請添加ORDER BY子句。其他數據庫會反對這個查詢,引發一個關於「SELECT列表中非GROUP BY中的非聚合表達式」的錯誤。 MySQL特定擴展(默認啓用)允許查詢執行。你確定你需要或想要一個GROUP BY操作嗎? – spencer7593
@GordonLinoff它是MySQL。它接受這個沒有錯誤,除非另有配置:( –