繁体   English   中英

SQL:分配序列号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM