2011-04-18 117 views
1

有一个表格,其中有列:id,艺术家,标题,专辑。 我需要得到具有对不同的值(艺术家,标题)和唱片行mysql。 sql查询。选择

例如:

,我现在(我的查询的结果):
===艺术家===== ==标题=========专辑
一些artist1 ===歌曲标题1 ===第一专辑
一些artist1 ===歌曲标题1 ===第二张专辑
some artist1 === song ti TLE 1 ===第三张专辑

我需要:
===艺术家=======标题=========专辑
一些artist1 ===歌标题1 ===第一张专辑

回答

0

通过使用作为

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

它会返回一个排的一对标题和艺术家的组。

0

过滤掉第二张和第三张专辑。 WHERE专辑NOT IN('第二张专辑','第三张专辑')

虽然如果我们可以看到架构,但它有帮助。

0

您选择显示哪一个相册取决于相册的顺序。这顺序是不是唯一的,但是像下面这样可能会产生你在找什么:

SELECT artist, title, MAX(album) 
FROM MyTable 
GROUP BY artist, title 
0

试试这个:

GROUP BY artist title album 
1
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条件以控制将返回哪个相册。