我不确定我所要求的是否可能......但它可能是哈哈。
基本上,我有两张桌子、曲目和专辑。
我想显示所有曲目的列表并从专辑部分获取名称。
这些表看起来像这样:
tbl_tracks
id - int, auto increment, primary key
album_id - int
title - varchar 50
and
tbl_albums
id - int, auto increment, primary key
title - varchar 50
现在,我运行查询:
SELECT tbl_tracks
.title
, tbl_albums
.title
FROM tbl_tracks
, tbl_albums
WHERE tbl_tracks
.album_id
= tbl_albums
.id
通过...分组tbl_tracks
.title
现在打印出以下列表:
Track1 Artist1
Track2 Artist1
Track3 Artist1
Track1 Artist2
等等..等等..
(为了清楚起见,我这样做的曲目名称不是张贴的)
现在我想要做的是选择另一列,按艺术家对每个曲目进行编号,以便上面的查询将输出:
1 Track1 Artist1
2 Track2 Artist1
3 Track3 Artist1
1 Track1 Artist2
但我想在没有任何其他列添加到数据库或没有任何服务器端循环的情况下做到这一点,我将如何做到这一点?
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)