У меня есть таблица в БД. С полями id, pos. А также есть массив с идентификаторами:
Array (
[0] => 1858
[1] => 1863
[2] => 1725
[3] => 1595
[4] => 1834
[5] => 1835
[6] => 1859
// ... и т.д.
)
Я хочу сделать update в таблице таким образом, чтобы в колонке pos было значение, равное индексу в массиве + 1, то есть для 1858 pos был равен 1, для 1863 - 2, для 1725 - 3 и т.д.
Это можно как-то в один запрос сделать ёмко? Или тут только два пути: 1) в цикле делать update с where 2) в запросе городить гигантский switch/case ?
Можно воспользоваться функцией FIELD:
update table
set pos=field(id,'1858','1863',...)
UPD Или, по предложению @Akina:
update table
set pos=find_in_set(id,'1858,1863,...')
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости