Ich habe eine Liste von UUID-Zeichenfolgen, die ich verwenden möchte, um eine Abfrage zu filtern. Ich kann die Abfrage-Schleife in meiner Liste über Elemente wie so zu arbeiten, wenn ich:Go Wählen Sie unter Verwendung einer Liste von UUID-Zeichenfolgen
for i, fileUID := range fileUIDs {
db.Exec("DELETE FROM files WHERE uid = $1::uuid", fileUID)
}
Aber ich mag es erhalten arbeiten, um die Liste:
db.Exec("DELETE FROM files WHERE uid IN $1::uuid[]", fileUIDs)
Ist das möglich? Ich kann es nicht funktionieren lassen.
habe ich versucht, die Lösung in How to execute an IN lookup in SQL using Golang? aber ich bekomme Fehler wie pq: syntax error at or near ","
wenn Ebene ?
oder pq: syntax error at or near "::"
verwenden, wenn ?:uuid
verwenden. Ich habe folgendes benutzt:
fileUIDArgs := make([]interface{}, len(fileUIDs))
for i, fileUID := range fileUIDs {
fileUIDArgs[i] = interface{}(fileUID)
}
//also tried using "?::uuid"
myPsql := "DELETE FROM files WHERE uid IN (" + "?" + strings.Repeat(",?", len(uidStrings)-1) + ")"
db.Exec(myPsql, fileUIDArgs...)
Mögliches Duplikat von [Wie führe ich eine IN-Suche in SQL mit Golang aus?] (Http://stackoverflow.com/questions/20271123/how-to-execute-an-in-lookup-in-sql-using- golang) –
Dieser Teil bricht 'IN (","? "+'. Das Komma ist außerhalb der Zeichenkette. Versuch 'IN (?" + ' –
) Entschuldigung, das war ein Kopierfehler, der in der Frage behoben wurde. –