簡體   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