[英]SQL: Assigning sequence numbers
我想在向表中添加一组行时分配一个序列号。 我该怎么做呢? 我考虑过使用COUNT()或ROWID,但我不知道如何。
假设我有一个包含三列的表格:PlayListID,TuneID和SequenceNum
我想创建一个新的音乐播放列表,因此我将为PlayListID为2添加一堆TuneID值。 TuneID按艺术家,专辑和曲目号排序。 这是我目前拥有的:
SELECT TuneID From Tunes
WHERE ArtistID=2
ORDER BY AlbumID, TrackNum
我想我想做的是保留订购信息-确保在检索到PlayListID=2
所有乐曲时,它们都有一列指示其订购情况。 无法使用TrackNum
因为它们可能是许多专辑,我也可能编写另一个查询以其他顺序检索它们。
因此,我将如何修改以下命令以为插入的每一行添加一个升序列(序列)值?
INSERT INTO Playlist (Name,Seq)
SELECT Name, ??? As Seq FROM Tunes
WHERE ArtistID=2
ORDER BY AlbumID, TrackNum
我正在使用SQLite。 我不想使用自动增量功能,因为我希望每个PlaylistID的Seq编号为1。
try thiz:在播放列表中插入INSERT(名称,序列)从调谐中选择名称,行编号,WHERE ArtistID = 2 ORDER BY AlbumID,TrackNum;
工作中的SQL天才解决了我的问题。 这是解决方案-创建一个具有自动递增列的临时表。
CREATE TEMP TABLE New_Playlist (Seq INTEGER PRIMARY KEY AUTOINCREMENT, TuneID INTEGER);
INSERT INTO New_Playlist (TuneID)
SELECT TuneID FROM Tunes
WHERE ArtistID=2
ORDER BY AlbumID, Track;
INSERT INTO Playlist (TuneID, Name, Seq)
SELECT t.TuneID, t.Name, np.Seq
FROM New_Playlist np JOIN Tunes t ON t.TuneID = np.TuneID;
DROP TABLE New_Playlist;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.