我想在表中添加一组行时分配序列号。我该怎么做呢?我想过使用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。我不想使用自动增量,因为我希望每个播放列表ID的Seq编号为1。
答案 0 :(得分:0)
尝试thiz: INSERT INTO播放列表(名称,Seq) SELECT Name,rownum FROM Tunes WHERE ArtistID = 2 订购AlbumID,TrackNum;
答案 1 :(得分:0)
工作中的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;