У меня есть таблица, похожая на приведенную ниже.
id | episode_number
1 55
2 56
3 57-58
4 59
5 60
6 61-62
7 63
8 64
9 65-66
10 67-68
Моя цель — каждый раз, когда выбирается определенный эпизод. Я хотел бы вернуть следующие 5 результатов. Допустим, если выбран episode_number 60, я хотел бы вернуть следующие 5 результатов, которые
id | episode_number
6 61-62
7 63
8 64
9 65-66
10 67-68
Я добился этого, сделав следующее утверждение ниже, все прекрасно работает.
$query = $PDO -> prepare("SELECT * FROM table
WHERE `table`.episode_number > :episode
ORDER BY (`table`.episode_number + 0)
LIMIT 5");
$query->bindValue(':episode', 60, PDO::PARAM_INT);
Но как быть, если выбранные эпизоды не INT, а на самом деле STR? например, 61-62, как бы мне вернуть следующие 5 результатов?
Если я правильно понимаю проблему, когда у вас есть строка, вы получаете это значение в списке «следующий», а не «следующее» значение. Если это проблема, вот два способа ее решения:
SELECT *
FROM table
WHERE `table`.episode_number + 0 > :episode
ORDER BY (`table`.episode_number + 0)
LIMIT 5;
или же:
SELECT *
FROM table
WHERE `table`.episode_number >= :episode
ORDER BY (`table`.episode_number + 0)
LIMIT 5 OFFSET 1;
Других решений пока нет …