簡體   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