2013-09-03 2 views
0

У меня есть следующие данные в таблице. Я хочу сначала вернуть их последним, и я хочу вернуть только один пример трека (может быть несколько с тем же именем), но если трек имеет бэк-вокал (BVox), он должен быть возвращен первым.Переупорядочить до GROUP BY mysql

Пример данных:

Track_id  Artist  Title   BVox 
9    ADELE  SKYFALL  NO 
8    ADELE  SKYFALL  YES 
7    AVICII  WAKE ME UP YES 
6    AVICII  WAKE ME UP NO 
5    OLLY MURS DEAR DARLIN' NO 

Я хочу вернуться:

Track_id  Artist  Title   BVox 
8    ADELE  SKYFALL  YES 
7    AVICII  WAKE ME UP YES 
5    OLLY MURS DEAR DARLIN' NO 

Итак, мне нужно сгруппировать их по Художник & Название, что достаточно легко, НО , группа должна быть заказана BVox по убыванию.

Я не могу просто найти для всех, где BVox = 'Да', потому что у песни Olly Murs нет BVox, но я хочу, чтобы это отображалось как последние релизы.

Я использую следующие, но я думаю, что они группируются, а затем приказал, которые не хорошо, как это показывает тогда адельной дорожки, но с BVox = «Нет»

SELECT 
    *, 
    COUNT(*) How_many_tot 
FROM 
    tracks 
GROUP BY 
    artist, Title 
ORDER BY 
    track_id desc limit 50 

Возможно ли это ?

+0

Я думаю, со ссылкой на 'колонке BVox', когда вы группировка по' artist' и 'title' нелогично. Какое значение имеет это? – Itay

+0

@Itay Пьесы BVox являются первыми, так это то, что они представляют собой набор треков, упорядоченных по последнему слову, а затем образцы предлагаются, но если трек имеет BVox, я хочу, чтобы это было как образец –

+0

@ Теперь, как how_many_tot показывает, сколько вариантов трек есть - могут быть некоторые с и без BVox, в разных песенных клавишах и т. д. эта информация показана на странице –

ответ

0
SELECT * FROM 
(SELECT * FROM Table1 
    ORDER BY 
    field(BVOX,'YES') desc, track_id desc) abc 
GROUP BY artist, Title 

SAMPLE FIDDLE

+0

@Itay * группа должна быть ** заказана BVox по убыванию первой *** –

+0

@ 491243 Вы правы. Я неправильно понял ОП. – Itay

+0

Это на самом деле v близко, чтобы быть ИНГИ правильное, фактическим решения является: SELECT * FROM (SELECT * ИЗ треков ORDER BY поля (BVOX 'Да') DESC, track_id убывание) а GROUP BY художника, Порядок заголовка по идентификатору пути track_id 50 –