繁体   English   中英

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

[英]How can I select unique rows from a table in 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

怎么样?

您可以使用DISTINCT关键字。

SELECT DISTINCT artist, title, album 
FROM YourTable

但是,如果在每一行中重复进行这些设计,就好像您的设计没有被规范化。

(在注释后编辑。)似乎您需要其他列,但是您并不关心这些列中显示了哪些可能的匹配值。 在那种情况下,您可以使用GROUP BY据我在MySQL中了解的,如果您未在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中,您需要将它们包装在一起。 例如

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM