有一个包含列的表:id,artist,title,album。 我需要获得具有不同的对(艺术家,标题)和专辑
值的行示例:
我现在(我的询问结果):
=== artist ======= title ========= album
some artist1 ===歌曲名称1 ===第一张专辑
some artist1 ===歌曲名称1 ===第二张专辑
some artist1 ===歌曲名称1 ===第三张专辑
答案 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