2014-02-24 5 views
0

테이블에 행 그룹을 추가 할 때 시퀀스 번호를 지정하고 싶습니다. 어떻게해야합니까? 내가 COUNT() 또는 ROWID 사용에 대해 생각하지만 어떻게 알아낼 수 없습니다.SQL : 시퀀스 번호 지정

의 내가 세 개의 열이있는 테이블이 있다고 가정 해 보자 : 나는 새로운 곡 재생 목록을 만들려면 PlayListID, TuneID 및 SequenceNum

을, 그래서 나는 2의 PlayListID에 대한 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를 사용하고 있습니다. Seq 번호를 각 PlaylistID에 대해 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; 
0

가 thiz 시도 : INSERT INTO 재생 목록 (이름, 서열) SELECT 이름, 곡 FROM ROWNUM WHERE ALBUMID, TRACKNUM BY ArtistID 순 = 2 ORDER;

+0

무엇이'rownum'입니까? –

+0

sql default fuc – Hrithu

+0

SQLite에는'rownum'이라는 함수가 없습니다. –