根据MySQL的结果选择一个选择

时间:2013-09-02 07:18:05

标签: php 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

这就是我正在尝试的但是计数会计算所有曲目,而不仅仅是当前行:

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

这可能是使用嵌套查询还是有更好的方法?

5 个答案:

答案 0 :(得分:1)

试试这个:

SELECT Artist, title, count(*) as How_many 
FROM tracks
WHERE easytosing='Yes'
GROUP BY Artist,Title

答案 1 :(得分:1)

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'

答案 2 :(得分:0)

SELECT Artist,Title, COUNT(*) FROM TABLE1 GROUP BY Artist,Title

<强> SAMPLE FIDDLE

答案 3 :(得分:0)

只需简单地您可以使用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

在0.00秒内返回2行

答案 4 :(得分:-1)

在特定情况下:

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

因为你得到每个艺术家/标题的歌曲数量。

在这种情况下,您不需要子查询。

你可以执行的另一个查询是一个查询,其中主选择基于磁盘表(我认为你有一个磁盘表,你有一个艺术家的外键和磁盘的名称),你得到一些包含每个艺术家/磁盘的歌曲。

这样,如果一个磁盘没有歌曲,你就会得到零值。