簡體   English   中英

在基於結果的選擇中選擇MySQL

[英]Select within a select based on results MySQL

我有一張桌子

Artist     Title      Song Key
A          Title A    A
A          Title A    B
A          Title A    F
B          Title B    A

我想返回每首歌曲,但還要顯示該歌曲有多少個版本,例如,理想結果將是:

Artist     Title       How_many
A          Title A     3
B          Title B     1

這是我正在嘗試的方法,但count不僅包括當前行,還包括所有軌道:

SELECT *, 
       ( select count(*) 
           from tracks 
          where artist=artist 
            AND title=title ) as How_many 
  from tracks
 where easytosing='Yes'
 group by title, artist
 order by track_id desc

是否可以使用嵌套查詢或有更好的方法?

嘗試這個:

SELECT Artist, title, count(*) as How_many 
FROM tracks
WHERE easytosing='Yes'
GROUP BY Artist,Title
SELECT t.*, how_many
        from tracks t
inner join 
( select title,artist, count(*)  ,how_many
           from tracks 
          group by artist,title ) as temp
temp.title=t.title and temp.artist=t.artist
 where easytosing='Yes'
SELECT Artist,Title, COUNT(*) FROM TABLE1 GROUP BY Artist,Title

樣本區

只需簡單地使用group by即可執行以下查詢

  select Artist,Title,count(Song_Key) as How_many
  from Tracks
  group by Artist,Title

一旦執行上述查詢,您將獲得所需的結果。

   ARTIST   TITLE   HOW_MANY
     A      Title A     3
     B      Title B     1

2行在0.00秒內返回

在特定情況下:

SELECT title, artist, count(*)
from tracks
where easytosing='Yes'
group by title, artist

因為您可以獲得每個藝術家/標題的歌曲數量。

在這種情況下,您不需要子查詢。

您可以執行的另一個查詢是這樣一個查詢,該查詢的主要選擇基於磁盤表(我認為您有一個磁盤表,其中在歌手處有外鍵和磁盤名稱),在其中獲取了一些包含的歌曲每個藝術家/磁盤。

這樣,如果一個磁盤上沒有歌曲,您將得到零值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM