我正在尝试构建一个仅显示非唯一重复项的查询。我已经构建了一个查询,显示了所有考虑的记录:
SELECT tbl_tm.title, lp_index.starttime, musicsound.archnr
FROM tbl_tm
INNER JOIN musicsound on tbl_tm.fk_tbl_tm_musicsound = musicsound.pk_musicsound
INNER JOIN lp_index ON musicsound.pk_musicsound = lp_index.fk_index_musicsound
INNER JOIN plan ON lp_index.fk_index_plan = plan.pk_plan
WHERE tbl_tm.FK_tbl_tm_title_type_music = '22' AND plan.airdate
BETWEEN to_date ('15-01-13') AND to_date('17-01-13')
GROUP BY tbl_tm.title, lp_index.starttime, musicsound.archnr
HAVING COUNT (tbl_tm.title) > 0;
对应的结果集如下所示:
title starttime archnrr
============================================
Pumped up kicks 05:05:37 0616866
People Help The People 05:09:13 0620176
I can't dance 05:12:43 0600109
Locked Out Of Heaven 05:36:08 0620101
China in your hand 05:41:33 0600053
Locked Out Of Heaven 08:52:50 0620101
它为我提供了在特定时间跨度之间播放的音乐标题以及它们的开始时间和存档 ID。
我想要实现的是这样的:
title starttime archnr
============================================
Locked Out Of Heaven 05:36:08 0620101
Locked Out Of Heaven 08:52:50 0620101
只剩下两列:两者共享相同的标题和存档编号,但时间部分不同。增加“HAVING COUNT”值会给我一个零行结果集,因为没有任何条目完全相同。
到目前为止,我发现这个问题的解决方案很可能有一个嵌套子查询,但我似乎无法完成它。对此的任何帮助将不胜感激。
注意:我在 Oracle 11g 服务器上。我的用户具有只读权限。我在我的工作站上使用 SQL Developer。