code: func (a *ArgType) colnamesquerymulti(fields []*Field, sep string, startCount int, ignoreNames []*Field) string {
  	ignore := map[string]bool{}
  	for _, f := range ignoreNames {
  		ignore[f.Name] = true
  	}
  
  	str := ""
  	i := startCount
  	for _, f := range fields {
  		if ignore[f.Name] {
  			continue
  		}
  
  		if i > startCount {
  			str = str + sep
  		}
  		str = str + a.colname(f.Col) + " = " + a.Loader.NthParam(i)
  		i++
  	}
  
  	return str
  }
docs: // colnamesquerymulti creates a list of the column names in fields as a query and
  // joined by sep, excluding any Field with Name contained in the slice of fields in ignoreNames.
  //
  // Used to create a list of column names in a WHERE clause (ie, "field_1 = $1
  // AND field_2 = $2 AND ...") or in an UPDATE clause (ie, "field = $1, field =
  // $2, ...").