Rumah >pembangunan bahagian belakang >Golang >Tanda kurung dua untuk klausa mana menggunakan 'IN' di gorm
Editor PHP Xinyi membawakan anda ciri penting gorm - kurungan berganda bagi klausa mana "IN" dalam gorm. Ciri ini membolehkan kami membuat pertanyaan dengan lebih mudah sama ada berbilang nilai berada dalam medan tertentu, memudahkan penulisan pernyataan pertanyaan dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dengan menggunakan kurungan berganda, kita boleh menghantar hirisan dalam klausa where, yang mengandungi nilai untuk ditanya, dan gorm akan menukarnya secara automatik menjadi klausa "IN" untuk melaksanakan operasi pertanyaan. Ciri ini sangat praktikal dalam pembangunan sebenar dan membantu kami mengendalikan keperluan pertanyaan data yang kompleks dengan lebih cekap.
Saya menggunakan klausa where untuk mengemas kini nilai dalam pangkalan data melalui gorm
db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id IN (?)", ids).Updates(users)
id adalah sebahagian daripada id dan pengguna adalah struktur
Masalahnya ialah saya mendapat ralat ini
错误1241(21000):操作数应包含1列
Sql yang dihasilkan oleh gorm ialah ini. Nampaknya ia mencipta kurungan berganda, menyebabkan ralat ini. Tapi tak tahu macam mana nak selesaikan masalah ni
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'))
Edit 1
Saya mengeluarkan () daripada (?) dan ia mempunyai kesan yang sama
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列
Saya temui jawapannya di sini https://github.com/go-gorm/gorm/issues/5014 dan https://gorm.io/docs/sql_builder. html#klausa
Menggunakan klausa ini saya boleh melakukan sesuatu seperti ini
query.Clauses( clause.Where{ Exprs: []clause.Expression{ clause.Expr{ SQL: "id IN ?", Vars: []interface{}{ids}, WithoutParentheses: true, }, }, }, )
Atas ialah kandungan terperinci Tanda kurung dua untuk klausa mana menggunakan 'IN' di gorm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!