加入时间戳还是如何?

时间:2018-10-25 18:54:32

标签: mysql

这是我在这里的第一篇文章,因为我真的需要一些帮助,因为这个问题使我发疯...

我在数据库中有2个表(此处已简化):

队列列表:

+--+------+-------------------+-------+------+------+
|ID|songID|       ETA         |artist |title |album |
+--+------+-------------------+-------+------+------+
|1 |5     |2018-10-01 00:00:01|artist1|title1|album1|
|2 |6     |2018-10-01 00:05:01|artist2|title2|album2|
+----+----+-------------------+-------+------+------+

歌曲:

+--+-------+------+------+-------------------+-------------------+-------------------+-------------------+
|ID|artist |title |album |   date_played     |  artist_played    |    title_played   |    album_played   |
+--+-------+------+------+-------------------+-------------------+-------------------+-------------------+
|5 |artist1|title1|album1|2018-10-01 11:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|
|6 |artist2|title2|album2|2018-10-01 11:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|
|9 |artist9|title9|album9|2018-09-01 01:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|2018-10-01 00:00:01|
+--+-------+------+------+-------------------+-------------------+-------------------+-------------------+

播放歌曲时,"date_played"表中的dbo.songs列将用current timestamp更新。

对于所有与播放曲目具有"artist_played"相同的导入曲目,将更新"title_played""album_played"artist/title/album列。

每次将曲目添加到播放列表("dbo.queuelist"表)时,ETA列时间戳都会增加(例如,ID#2中的行的ETA =当前时间戳+持续时间或ID#1歌曲)等等。因此,它基本上会告诉您轨道何时开始。

我的问题是我需要选择一些音轨,但要间隔一些时间。

为简单起见,假设我有track, artist, title, album的{​​{1}}分离时间,当我从60 minutes表中选择音轨时,我会有这样的东西:

dbo.songs

结果将添加到SELECT ID FROM songs WHERE (TIMESTAMPDIFF(MINUTE, date_played, NOW())>60 AND TIMESTAMPDIFF(MINUTE, artist_played, NOW())>60 AND TIMESTAMPDIFF(MINUTE, title_played, NOW())>60 AND TIMESTAMPDIFF(MINUTE, album_played, NOW())>60) ORDER BY date_played ASC LIMIT 10; 表中

这很好,但是某些结果可能已经在"dbo.queuelist"中,如果满足分离时间条件,这很好,但是我不知道如何检查。

我知道我需要确定"dbo.queuelist"中是否已存在track, artist, title or album,如果是,则需要比较queuedate_played, artist_played, title_played, album_played中的每个时间戳表格,并附上相应结果的"dbo.songs"时间戳。

例如,我可以在ETA专辑的dbo.queuelist中有一个曲目,因此无论我从"X"中选择具有相同dbo.songs的曲目,我都需要确保他们之间将是60分钟。

感谢您的帮助。 谢谢!

0 个答案:

没有答案