我有一张包含歌曲代码和时间戳的表格。代码表示正在播放的歌曲,时间戳表示歌曲被识别为正在播放的时间。我需要生成所有代码及其相应时间戳的列表,但仅限于第一次识别它们。主要问题是一首歌可能会播放多次,唯一表明它是歌曲的新实例的是前一行会包含不同的代码。
这是我的代码(仅提供每个
的第一个和最后一个时间码SELECT a.* FROM ap_results a INNER JOIN ( SELECT trackId, MAX(timeplay), timeplay FROM ap_results GROUP BY trackId ) b ON a.trackId = b.trackId AND a.timeplay > b.timeplay WHERE a.trackId <> b.trackId ORDER BY timeplay
-
╔════╦══════════╦═════════════════════╦══╗
║ id ║ trackId ║ playTime ║ ║
╠════╬══════════╬═════════════════════╬══╣
║ 1 ║ 42390-01 ║ 2016-02-01 01:00:00 ║ ║
║ 2 ║ 42390-01 ║ 2016-02-01 01:01:00 ║ ║
║ 3 ║ 42390-01 ║ 2016-02-01 01:01:25 ║ ║
║ 4 ║ 54212-04 ║ 2016-02-01 01:01:30 ║ ║
║ 5 ║ 54212-04 ║ 2016-02-01 01:01:59 ║ ║
║ 6 ║ 42390-01 ║ 2016-02-01 01:02:08 ║ ║
║ 7 ║ 12899-03 ║ 2016-02-01 01:07:02 ║ ║
║ 8 ║ 12899-03 ║ 2016-02-01 01:07:26 ║ ║
║ 9 ║ 42390-01 ║ 2016-02-01 01:08:10 ║ ║
╚════╩══════════╩═════════════════════╩══╝
我需要一个查询来显示以下内容:
42390-01 - 2016-02-01 01:00:00
54212-04 - 2016-02-01 01:01:30
42390-01 - 2016-02-01 01:02:08
12899-03 - 2016-02-01 01:07:02
42390-01 - 2016-02-01 01:08:10
答案 0 :(得分:0)
我认为你正在寻找的不容易用sql beacuse获得的是程序结果..
以下是一些简短的建议(在pesudo代码中,因为我不会使用您使用的服务器端语言),以便通过程序方法服务器端获取结果。
connect your db
get all the rows in order of timeplay
set the firts rows in a var (actRow) and in an array of result rows (resultRows[])
loop over these rows starting from the second {
if the actual in loop row trackId is not the same of actRow. {
store/add this row in resultRows // for final result
and set the var for row with this value
}
}
show the resultRows