ここで私はCoreTracksと呼ばれるテーブルを持っている:私は取得したい何1つの行から重複を選択しますか?
+---------+-----------------+----------+----------+----------+---------+
| 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、およびAを有することに基づいて重複を削除しようとしています最高のビットレートと最高のファイルサイズを持つエントリを返さないで、別のトラック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);
:
は、私がこれまで持っていることはこれです。このクエリを機能させるために何が欠けていますか?
それは信じられないほどです。大変ありがとう!重複結果を選択する代わりに –
を削除すると、どうすれば削除できますか? –
@BrandonMintonあなたは "CoreTracks Where TrackId INからDELETEを実行することができます(SELECT c1.TrackId FROM ...) – Glenn