Здесь у меня есть таблица под названием 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 |
+---------+-----------------+----------+----------+----------+---------+
Я пытаюсь удалить дубликаты на основе имеющих одинаковую должность, тот же художник идентификатор и другой идентификатор дорожки, не возвращая запись с наивысшим битрейтом и самым высоким размером файла.
То, что я до сих пор это:
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);
который возвращает каждый трек. Что мне не хватает, чтобы этот запрос работал?
Это невероятно. Спасибо много! –
вместо того, чтобы выбирать повторяющиеся результаты, как я могу их удалить? –
@BrandonMinton Вы можете сделать «УДАЛИТЬ ОТ CoreTracks WHERE TrackId IN (SELECT c1.TrackId FROM ...) – Glenn