我最好是SQL新手 - 感谢您对此答案的任何帮助。它是MediaMonkey程序特有的,但更广泛适用我认为因为MediaMonkey的数据库我相信SQLite 3.我查询的表格叫做歌曲和所有栏目我都是引用在此表中。
我使用MediaMonkey中的Custom4字段存储Musicbrainz中的歌曲工作ID,以及Custom5字段来存储AcoustID。我试图创建一个歌曲封面/替代/现场版本的播放列表,我评了5星,但这首5首歌不是经典作品或爵士乐录音(我使用分组字段) (GroupDesc)表示曲目是古典曲目还是爵士曲目。
SQL查询的参数必须是这样的:
我从我发现的一些例子中拼凑了以下SQL查询:
Songs.Custom4 IN (SELECT Custom4 FROM Songs GROUP BY Custom4 HAVING Count(*) > 1 AND Max(Rating) > 99 AND Custom4 <> '' AND GroupDesc <> 'Classical' AND GroupDesc <> 'Jazz')
这似乎包括以下内容:
不知何故,我需要过滤出5星经典曲目或爵士曲目以及与这些曲目具有相同工作ID的曲目,我需要排除重复和5星级录音。
我们假设你有一张这样的表:
<table class="blueTable">
<thead>
<tr>
<th> Song</th>
<th>Grouping</th>
<th>Rating</th>
<th>Work ID</th>
<th>AcoustID</th>
</tr>
</thead>
<tbody>
<tr>
<td>A1</td>
<td>Classical </td>
<td>100 </td>
<td>a12 </td>
<td>b12 </td>
</tr>
<tr>
<td>A2</td>
<td>Jazz </td>
<td>100 </td>
<td>a21 </td>
<td>b21 </td>
</tr>
<tr>
<td>A3</td>
<td> NULL</td>
<td>100 </td>
<td>a31 </td>
<td>b31 </td>
</tr>
<tr>
<td>A4</td>
<td>NULL </td>
<td>NULL </td>
<td>a12 </td>
<td>b41 </td>
</tr>
<tr>
<td>A5</td>
<td>NULL </td>
<td>NULL </td>
<td>a31 </td>
<td>b31 </td>
</tr>
<tr>
<td>A6</td>
<td>Classical </td>
<td>NULL </td>
<td>a31 </td>
<td>b61 </td>
</tr>
<tr>
<td>A7</td>
<td>NULL </td>
<td>NULL </td>
<td>a31 </td>
<td>b71 </td>
</tr>
</tbody>
</table>
&#13;
我希望我的查询包含以下歌曲:A6,A7
以下是逻辑:A1和A2将被排除,因为它们是古典音乐和爵士乐曲目,并且不是评级为100的流行歌曲的封面。由于它的评级为100,因此将排除A3。 A4将被排除在外,因为它是被评为100的经典曲目的流行封面.AV将被排除,因为它是A3的副本。包含A6 - 它是A3的经典封面。包含A7 - 它是A3的封面。