sql >> Databasteknik >  >> RDS >> Mysql

Golang MySQL frågar efter odefinierad mängd args med IN-operatorn

Stmt.Query() har en variadisk parameter:

func (s *Stmt) Query(args ...interface{}) (*Rows, error)

Det betyder att du kan använda ellipsen ... för att skicka ett segmentvärde som värdet för den variadic-parametern, men det segmentet måste vara av typen []interface{} , t.ex.:

var args []interface{}
for _, v := range r.Form["type"] {
    t, _ := strconv.Atoi(v)
    args = append(args, t)
}

// ...

rows, err := stmt.Query(args...)

Som ett alternativ kan du förbygga SQL-frågan och köra utan att skicka frågeargument, se till exempel Gå och IN-klausul i Postgres .




  1. Använd Räkna för att hitta antalet förekomster

  2. Uppdatera rad med data från en annan rad i samma tabell

  3. SQL-fråga för att få kolumnvärden som motsvarar MAX-värdet för en annan kolumn?

  4. Hur skriver man Hibernate Criteria för denna sql-fråga?