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