Я хочу сделать запрос, содержащий имя исполнителя и соответствующее видео обложки, которое является наивысшим идентификатором в столбце ссылки. В этом примере вторая строка с .embd// ... Формат ссылки не изменяется. Я использую PHP, MySQL и InnoDB двигательУчитывая набор URL-адресов в формате {FIXED PREFIX}/{NUMERIC ID}/..., как получить URL с наивысшим {NUMERIC ID}?
Я начал делать внутреннее соединение этих двух таблиц:
Id | Artist
1 John Doe
2 Jane Doe
И это один
Id | Id_Artist | Link
53 1 http://example.com/embd/123/video/...
54 1 http://example.com/embd/125/video/...
55 1 http://example.com/embd/124/video/...
56 1 http://example.com/embd/122/video/...
57 2 http://example.com/embd/128/video/...
58 2 http://example.com/embd/129/video/...
59 2 http://example.com/embd/130/video/...
, который выдает ожидаемый результат со всеми художников и их видео
SELECT fp.id, fp.name, gl.link AS Video
FROM feed_post_artist AS fp
INNER JOIN gallery gl ON gl.id_artist = fp.id
Id | Id_Artist | Link
1 John Doe http://example.com/embd/123/video/...
1 John Doe http://example.com/embd/125/video/...
1 John Doe http://example.com/embd/124/video/...
1 John Doe http://example.com/embd/122/video/...
2 Jane Doe http://example.com/embd/128/video/...
2 Jane Doe http://example.com/embd/129/video/...
2 Jane Doe http://example.com/embd/130/video/...
Можно ли использовать регулярное выражение для сравнения каждого видео исполнителя и вернуть в итоге только самый высокий идентификатор ссылки? (Первые 4 строки 125 самые высокие, последние 3 строки 130 являются самыми высокими). Я пробовал использовать MAX(), но он не будет работать, очевидно.
Id | Id_Artist | Link
1 John Doe http://example.com/embd/125/video/...
2 Jane Doe http://example.com/embd/130/video/...
EDIT:
Как Юлиана в комментариях предложил, MySQL SUBSTR() решает этот конкретный случай. Однако, когда id превышает 999, он перестанет работать.
SELECT fp.id, fp.name, SUBSTR(gl.link,28,5) AS Video
FROM feed_post_artist AS fp
INNER JOIN gallery gl ON gl.id_artist = fp.id
Единственная часть отсутствует группирует результаты для возврата только MAX()
Я не думаю, что регулярные выражения доступны в общих синтаксических синтаксисах SQL, но вы могли бы достичь своей цели в этом случае, используя функцию 'SUBSTR' /' SUBSTRING'. – Julian
Все ли ссылки в том же формате? Возможно, вам будет полезно сохранить идентификатор ссылки в отдельной колонке. – Jerrad
Да, все ссылки в одном формате. К сожалению, я искал решение этой проблемы, не сохраняя идентификатор ссылки в обгоревшем столбце. – Cracktastic