如何从SQL中的表中选择唯一的行?

时间:2011-04-04 23:23:24

标签: mysql sql

我有一个表格,列有艺术家,标题,专辑和其他列日期,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 个答案:

答案 0 :(得分:5)

您可以使用DISTINCT关键字。

SELECT DISTINCT artist, title, album 
FROM YourTable

但是如果你的设计在每一行都重复进行,那么你的设计似乎并不正常化。

(评论后编辑。)您似乎需要其他列,但您不关心这些列中可能存在哪些匹配值。在这种情况下,你可以使用GROUP BY据我所知,如果你没有在GROUP BY中指定所选列,那么你会得到这个,但它在所有其他RDBMS中完全无效。

SELECT artist,
       title,
       album,
       id,
       link,
       artistlink,
       albumlink,
       songlength,
       ip,
       timestamp,
       image
FROM   wp_air1nowplaying_unique
GROUP  BY artist,
          title,
          album
ORDER  BY artist ASC,
          album ASC,
          title ASC  

在其他RDBMS中,您需要将它们包装在一个聚合中。 e.g。

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查询

答案 1 :(得分:0)

SELECT DISTINCT `artist`, `album`, `cover` FROM `yourtable`;