MySQL. SQL запрос выбирающий - PullRequest
1 голос
/ 18 апреля 2011

есть таблица со столбцами: id, исполнитель, название, альбом. мне нужно получить строки с разными значениями пары (исполнитель, название) и альбома

пример:

у меня сейчас (результат моего запроса):
=== исполнитель ======= title ========= альбом
какой-то исполнитель1 === название песни 1 === первый альбом
какой-то исполнитель1 === название песни 1 === второй альбом
какой-то исполнитель1 === название песни 1 === третий альбом

мне нужно:
=== исполнитель ======= title ========= альбом
какой-то исполнитель1 === название песни 1 === первый альбом

Ответы [ 5 ]

1 голос
/ 18 апреля 2011
SELECT  t.*
FROM    (
        SELECT  DISTINCT artist, title
        FROM    mytable
        ) td
JOIN    mytable t
ON      t.id = 
        (
        SELECT  id
        FROM    mytable ti
        WHERE   (ti.artist, ti.title) = (td.artist, td.title)
        ORDER BY
                ti.artist, ti.title, ti.id
        LIMIT 1
        )

Это вернет сначала album для данного (artist, title) в id порядке.

Измените условие ORDER BY в подзапросе, чтобы указать, какой альбом будет возвращен.

0 голосов
/ 18 апреля 2011

Попробуйте это:

GROUP BY artist title album
0 голосов
/ 18 апреля 2011

Использовать group by как

select * from `table` group by title,artist;

Возвращается одна строка для одной пары заголовка и исполнителя.

0 голосов
/ 18 апреля 2011

Какой альбом вы выберете для показа, зависит от порядка альбомов.Этот порядок не уникален, но что-то вроде следующего может привести к тому, что вы ищете:

SELECT artist, title, MAX(album)
FROM MyTable
GROUP BY artist, title
0 голосов
/ 18 апреля 2011

Отфильтруйте второй и третий альбом. ГДЕ альбом NOT IN («второй альбом», «третий альбом»)

Хотя это помогает, если мы видим схему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...