php - MySQL更新播放列表查询可能吗?

标签 php mysql playlist

playlist
+----+----------+---------------+
| id | uploader | name          |
+----+----------+---------------+
|  1 |        1 | Testplaylist1 |
|  2 |        1 | ...           |
+----+----------+---------------+ 

playlistvideo
| id | plid | videoid | videopos |
+----+------+---------+----------+
|  1 |    1 |       1 |        1 |
|  2 |    1 |       2 |        2 |
|  3 |    1 |       3 |        3 |
|  4 |    1 |       4 |        4 |
|  5 |    1 |       5 |        5 |
|  6 |    1 |       6 |        6 |
|  7 |    2 |     ... |      ... |
+----+------+---------+----------+

我有这两个表(以及其他表),我正在尝试更新播放列表视频表中视频的位置。我需要遵循这些“条件/约束”:

  • 新视频位置 videopos 是一个介于 1 和 6 之间的变量 $newPos,假设为 2。
  • 要“移动”到新位置 2 的视频 ID videoid 是属于另一个 videopos 变量 $oldPos 的视频 ID > ,假设位置 1。
  • 播放列表 ID playlistvideo.plid 必须属于 playlist.uploader 中的特定上传者,在本例中为上传者 1。
  • 因此视频 id 1 获得位置 2,我们不必介意视频 id 2 的位置相同,我正在对所有视频重复该过程。

这意味着每次发生更改时,我都会逐步遍历所有上传者 1 的播放列表中从位置 1 到 N 的所有 videoid : videopos

这是我可以使用的示例数据,在第一个播放列表中,视频位置 2 已移动到视频位置 1。您可以看到位置稍微向下重新启动,这意味着我们位于第二个播放列表中并且没有发生任何移动。这是来自一个数组,其中数组索引 ($newPos) 充当每个播放列表中的视频位置。

newPos: 1 oldPos: 2
newPos: 2 oldPos: 1
newPos: 3 oldPos: 3
newPos: 4 oldPos: 4
newPos: 5 oldPos: 5
newPos: 6 oldPos: 6
newPos: 1 oldPos: 1
newPos: 2 oldPos: 2
newPos: 3 oldPos: 3
newPos: 4 oldPos: 4

MySQL 查询可以管理这个问题还是我需要更多数据?

最佳答案

您可以执行以下操作

if ($newPos > $oldPos)
{
    $query = "UPDATE playlistvideo SET videopos = IF(videopos = $oldPos, $newPos, videopos -1) WHERE videopos >= $oldPos AND videopos <= $newPos";
}
else if ($newPos < $oldPos)
{
    $query = "UPDATE playlistvideo SET videopos = IF(videopos = $oldPos, $newPos, videopos +1) WHERE videopos >= $newPos AND videopos <= $oldPos";
}

如果完全用 SQL 来完成,则为

UPDATE playlistvideo 
SET videopos = IF(videopos = $oldPos, $newPos, videopos + IF($oldPos > $newPos,1,IF($oldPos = $newPos, 0, -1)))
WHERE videopos BETWEEN $newPos AND $oldPos

关于php - MySQL更新播放列表查询可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567298/

相关文章:

jquery - 同一页面上的Jplayer音频和视频不起作用

PHP 邮件链接

PHP: Mysql查询麻烦

php - 如何检查 PHP 类中的所有函数值?

MySQL 变音符号不敏感搜索(阿拉伯语)

java - 在 Java 中获取 YouTube 播放列表的所有视频

iframe - 动态更新网站上的youtube播放列表

JavaScript HTML 和 PHP 弹出窗口

mysql - 尝试在 MySQL Workbench 中导入 sql 转储时使用 sql_mode 出现错误 1231 (42000)

php mysql select 好像不工作