Выбор уникальных записей из таблицы sqlite

У меня есть таблица sqlite под названием Tracks с информацией о множестве треков, хранящихся в моей музыкальной библиотеке. Столбцы в таблице следующие: artistName, trackName, trackPath, imagePath, year, albumName, bpm, genre1, genre2, genre3.

Я использую простой оператор выбора, чтобы вернуть все уникальные треки в моей таблице, например, чтобы получить все треки в жанре рок, я использую следующее:

SELECT DISTINCT artistName, trackName, trackPath, imagePath, year, albumName, bpm, genre1, genre2, genre3
FROM Tracks
WHERE genre1='Rock' or genre2='Rock' or genre3='Rock'

У меня проблема в том, что я не хочу возвращать 2 записи для трека, который может иметь другое значение года, но одно и то же имя исполнителя, имя трека, имя альбома. Например, если у меня есть 2 трека с artistName = 'Bruce Springsteen' и trackName = 'Dancing In The Dark' и albumName = 'Greatest Hits', но года могут быть разными, один может быть year = '1984', а другой может быть year = '1985', я просто хочу вернуть один из них, а не оба.

Может ли кто-нибудь помочь мне в этом? Это сводит меня с ума?!


person Adam    schedule 14.05.2014    source источник
comment
Добавить limit 1 в конец запроса? Кроме того, вы должны создать новую таблицу с именем track_genres, чтобы привязать жанры к вашим трекам, чтобы избежать столбцов genre123.   -  person juergen d    schedule 15.05.2014


Ответы (1)


Вы можете использовать то, что у вас есть, но добавить агрегацию к вашему запросу.

SELECT DISTINCT artistName, trackName, trackPath, imagePath, MAX(year), albumName, bpm, genre1, genre2, genre3 
FROM Tracks 
where genre1='Rock' or genre2='Rock' or genre3='Rock' 
group by artistName, trackName, trackPath, imagePath, albumName, bpm, genre1, genre2, genre3

Результатом будет одна запись, но год будет последним годом.

person HDoan    schedule 14.05.2014