我已经在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。它接受这个没有错误,除非另有配置:( –