在这里,我有一个表叫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