首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择计数器,分组依据

MySQL选择计数器,分组依据
EN

Stack Overflow用户
提问于 2011-03-31 06:46:32
回答 2查看 1.6K关注 0票数 3

我不确定我所要求的是否可能……但它很可能是哈哈。

基本上,我有两张桌子,曲目和专辑。

我想要显示所有曲目的列表,并从唱片集部分获取名称。

这些表格如下所示:

代码语言:javascript
复制
tbl_tracks
id - int, auto increment, primary key
album_id - int
title - varchar 50

代码语言:javascript
复制
tbl_albums
id - int, auto increment, primary key
title - varchar 50

现在,我运行查询:

选择tbl_trackstitletbl_albumstitle FROM tbl_trackstbl_albums WHERE tbl_tracks.album_id =tbl_albums。<代码>D11 GROUP BY <代码>D12。<代码>D13

现在打印出以下列表:

代码语言:javascript
复制
Track1 Artist1
Track2 Artist1
Track3 Artist1
Track1 Artist2

etc..etc..

(曲目名称并不是张贴的,为了清楚起见我这样做了)

现在我想要做的是选择另一个列,根据艺术家对每个曲目进行编号,这样上面的查询就会输出:

代码语言:javascript
复制
1 Track1 Artist1
2 Track2 Artist1
3 Track3 Artist1
1 Track1 Artist2

但是我想在没有任何其他列添加到数据库中或者没有任何服务器端循环的情况下这样做,我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-31 06:59:21

代码语言:javascript
复制
SELECT @rn := if(@g = tbl_albums.id, @rn+1, 1) rownumber,
       tbl_tracks.title, tbl_albums.title,
  @g := tbl_albums.id
FROM (select @g:=null, @rn:=0) initvars
CROSS JOIN tbl_tracks
INNER JOIN tbl_albums on tbl_tracks.album_id = tbl_albums.id
ORDER BY tbl_albums.id, tbl_tracks.title;
票数 3
EN

Stack Overflow用户

发布于 2011-03-31 07:18:10

我们需要在(AlbumTitle分区)上做一些像ROW_NUMBER()这样的事情。基于此article中为MySQl中的分析函数定义的技巧。

代码语言:javascript
复制
SELECT MO.*,
       @_rowNumber := @_rowNumber + 1
  FROM
       (
        SELECT m.*
          FROM
               (
                Select @_albumTitle := NULL
               ) V,
               (
                SELECT tbl_tracks.title As TrackTitle, 
                       tbl_albums.title As AlbumTitle
                  FROM tbl_tracks, 
                       tbl_albums 
                 WHERE tbl_tracks.album_id = tbl_albums.id
               ) m
         ORDER BY m.AlbumTitle,m.TrackTitle
       ) MO
 WHERE (CASE WHEN @_albumTitle IS NULL 
               OR @_albumTitle <> MO.AlbumTitle THEN @_rowNumber := 0 END IS NOT NULL)
   AND (@_albumTitle := MO.AlbumTitle) IS NOT NULL

注意:我只有MS SQL的经验,所以这个查询在语法上可能是错误的。并且这个查询在MySql中没有经过测试。我只是阅读了上面文章中的代码,并尝试遵循相同的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5493389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档