MySQL的。 SQL查询。选择

时间:2011-04-18 12:58:54

标签: mysql sql

有一个包含列的表:id,artist,title,album。 我需要获得具有不同的对(艺术家,标题)和专辑

值的行

示例:

我现在(我的询问结果):
=== artist ======= title ========= album
some artist1 ===歌曲名称1 ===第一张专辑
some artist1 ===歌曲名称1 ===第二张专辑
some artist1 ===歌曲名称1 ===第三张专辑

我需要:
=== artist ======= title ========= album
some artist1 ===歌曲标题1 ===第一张专辑

5 个答案:

答案 0 :(得分: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)的{​​{1}}。

更改子查询中的id条件以控制将返回哪个相册。

答案 1 :(得分:0)

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

如果我们能看到架构,那会很有帮助。

答案 2 :(得分:0)

使用group by

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

它会为一对标题和艺术家返回一行。

答案 3 :(得分:0)

您选择要显示的相册取决于相册的排序。这种排序并不是唯一的,但是类似下面的内容可以产生你想要的东西:

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

答案 4 :(得分:0)

试试这个:

GROUP BY artist title album