ОБНОВИТЬ несколько строк с разными значениями в одном запросе - PullRequest
0 голосов
/ 16 февраля 2020

Я хочу обновить несколько строк с разными значениями в одном запросе. Я как-то знаю эту операцию в 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...