Как я могу выбрать уникальные строки из таблицы в SQL? - PullRequest
1 голос
/ 05 апреля 2011

У меня есть таблица с артистами колонок, названием, альбомом и другими колонками для дат, ip и т. Д. Теперь я хочу отобразить уникальное название артиста и альбом в строке, как, скажем,

artist , album, title
a , b , c
a , b , c
d , e , f
a , b , d

, тогда должнодисплей

a,b,c
d,e,f
a,b,d

как?

Ответы [ 2 ]

5 голосов
/ 05 апреля 2011

Вы можете использовать ключевое слово DISTINCT.

SELECT DISTINCT artist, title, album 
FROM YourTable

Но не похоже, что ваш дизайн нормализуется, если они повторяются в каждой строке.

(Правкапосле комментариев.) Кажется, вам нужны другие столбцы, но вам все равно, какие из возможных совпадающих значений показаны в них.В этом случае вы можете использовать GROUP BY Насколько я понимаю, в MySQL, если вы не указываете выбранные столбцы в GROUP BY, вы получите это, но это совершенно недопустимо во всех других РСУБД.* В других РСУБД вам нужно будет обернуть их в совокупность.например,

SELECT artist,
       title,
       album,
       MAX(id)         id,
       MAX(link)       link,
       MAX(artistlink) artistlink,
       MAX(albumlink)  albumlink,
       MAX(songlength) songlength,
       MAX(ip)         ip,

Возвращенные значения вполне могут быть из разных строк с вышеприведенным.Чтобы избежать этого, вы должны использовать greatest-n-per-group query

0 голосов
/ 05 апреля 2011
SELECT DISTINCT `artist`, `album`, `cover` FROM `yourtable`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...