Я хочу обновить несколько строк с разными значениями в одном запросе. Я как-то знаю эту операцию в SQL синтаксисе. Но реализация этого в Go выглядит немного смущающей меня. Например, я хочу обновить столбец состояния на основе столбца menu_id.
Мой код работает для первой строки, но значение других строк изменяется на нуль
updateSql := "UPDATE tb_menu SET tb_menu.status =( case" // set query statement
condition := " WHERE tb_menu.menu_id IN ("
menuList := []interface{}{} //set empty interface array
//counter := 0
for _, row := range status {
menuList = append(menuList, row.Menu_id, row.Status, row.Menu_id)
updateSql += (" WHEN tb_menu.menu_id = ? THEN ? ")
condition += "?,"
}
updateSql += "end)"
condition = strings.TrimSuffix(condition, ",") // remove last "," from query statement
condition += ") "
updateSql += condition
update, err := db.Prepare(updateSql)
if err != nil {
fmt.Println(" error occured on Preparedb function ", err)
res = false
defer db.Close()
return res
}
set, err := update.Exec(menuList...) // query data to db
if err != nil {
fmt.Println("error occured while updating menu list ", err)
res = false
defer db.Close()
return res
}