在這裏,我有一個表叫CoreTracks:從單一行中選擇重複項?
+---------+-----------------+----------+----------+----------+---------+
| TrackId | URI | ArtistID | Title | FileSize | BitRate |
+---------+-----------------+----------+----------+----------+---------+
| 1 | /home/music/... | 234 | atune | 8958223 | 192 |
| 2 | /home/music/... | 427 | goodsong | 6954373 | 192 |
| 3 | /home/music/... | 427 | goodsong | 4695698 | 128 |
| 4 | /home/music/... | 427 | goodsong | 5839962 | 160 |
| 5 | /home/music/... | 427 | goodsong | 4695698 | 128 |
| 6 | /home/music/... | 522 | another | 3458859 | 128 |
+---------+-----------------+----------+----------+----------+---------+
我想要檢索的是:
+---------+-----------------+----------+----------+----------+---------+
| TrackId | URI | ArtistID | Title | FileSize | BitRate |
+---------+-----------------+----------+----------+----------+---------+
| 3 | /home/music/... | 427 | goodsong | 4695698 | 128 |
| 4 | /home/music/... | 427 | goodsong | 5839962 | 160 |
| 5 | /home/music/... | 427 | goodsong | 4695698 | 128 |
+---------+-----------------+----------+----------+----------+---------+
我試圖消除基於具有相同的標題,同一藝術家ID重複,和不同的曲目ID,而不返回具有最高比特率和最高文件大小的條目。
我到目前爲止是這樣的:
SELECT * FROM CoreTracks
WHERE Title = Title AND ArtistID = ArtistID
AND BitRate != (SELECT MAX(BitRate) FROM CoreTracks WHERE Title = Title AND ArtistID = ArtistID)
AND FileSize != (SELECT MAX(FileSize) FROM CoreTracks WHERE Title = Title AND ArtistID = ArtistID);
它返回每個軌道。我錯過了什麼使這個查詢工作?
真不可思議。非常感謝! – 2012-03-27 22:28:07
而不是選擇重複的結果,我該如何去刪除它們? – 2012-04-05 04:05:36
@BrandonMinton你可以做一個「從CoreTracks WHERE TrackId中刪除(SELECT c1.TrackId FROM ...) – Glenn 2012-04-05 11:32:21