Golang 製の ORM ライブラリの GORM を使用していて、 IN 区を書いた時にエラーが出た。
結論から書くと、公式ドキュメントが間違っていた。
シンタックスエラー
GORM の公式ドキュメントには IN 区を使う時、下記のように記述するよう書いてある。
// IN
db.Where("name IN ?", []string{"jinzhu", "jinzhu 2"}).Find(&users)
// SELECT * FROM users WHERE name IN ('jinzhu','jinzhu 2');
エラーが出る。
Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?) at line 1
解決
「 ? 」の周りを ( ) で括れば解決する。
// IN
db.Where("name IN (?)", []string{"jinzhu", "jinzhu 2"}).Find(&users)
// SELECT * FROM users WHERE name IN ('jinzhu','jinzhu 2');