Heim >Backend-Entwicklung >Golang >Doppelte Klammern für die Where-Klausel mit „IN' bei gorm
Der PHP-Editor Xinyi bringt Ihnen ein wichtiges Merkmal von gorm – die doppelten Klammern der where-Klausel von „IN“ in gorm. Mit dieser Funktion können wir bequemer abfragen, ob sich in einem bestimmten Feld mehrere Werte befinden, das Schreiben von Abfrageanweisungen vereinfachen und die Lesbarkeit und Wartbarkeit des Codes verbessern. Durch die Verwendung doppelter Klammern können wir in der Where-Klausel ein Slice übergeben, das den abzufragenden Wert enthält, und Gorm konvertiert ihn automatisch in eine „IN“-Klausel, um den Abfragevorgang auszuführen. Diese Funktion ist in der tatsächlichen Entwicklung sehr praktisch und hilft uns, komplexe Datenabfrageanforderungen effizienter zu bewältigen.
Ich verwende die Where-Klausel, um den Wert in der Datenbank über gorm zu aktualisieren
db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id IN (?)", ids).Updates(users)
IDs sind Teil von IDs und der Benutzer ist die Struktur
Das Problem ist, dass ich diesen Fehler erhalte
错误1241(21000):操作数应包含1列
Die von gorm generierte SQL ist diese. Es sieht so aus, als würde eine doppelte Klammer erstellt, die diesen Fehler verursacht. Aber ich weiß nicht, wie ich dieses Problem lösen kann
UPDATE `users` SET `status`='CANCELED',`updated_at`='2023-12-12 20:39:40.904' WHERE id IN (('066a75df-ba11-49c8-9b39-b1cce029760e','5f95f93e-94a5-46d1-86eb-dde83437ea26'))
Bearbeiten 1
Ich habe () aus (?) entfernt und es hatte den gleichen Effekt
db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id IN ?", ids).Updates(users)
UPDATE `users` SET `status`='CANCELED',`updated_at`='2023-12-12 21:18:46.537' WHERE id IN (('066a75df-ba11-49c8-9b39-b1cce029760e','5f95f93e-94a5-46d1-86eb-dde83437ea26'))
错误1241(21000):操作数应包含1列
Ich habe die Antwort hier gefunden https://github.com/go-gorm/gorm/issues/5014 und https://gorm.io/docs/sql_builder. html#clause
Mit dieser Klausel kann ich so etwas tun
query.Clauses( clause.Where{ Exprs: []clause.Expression{ clause.Expr{ SQL: "id IN ?", Vars: []interface{}{ids}, WithoutParentheses: true, }, }, }, )
Das obige ist der detaillierte Inhalt vonDoppelte Klammern für die Where-Klausel mit „IN' bei gorm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!