Update
Bob を使用した MySQL の UPDATE クエリの例を示します。
基本的な UPDATE
UPDATE users SET name = ?, updated_at = ? WHERE id = ?
mysql.Update("users").
Set("name", mysql.Arg("Updated Name")).
Set("updated_at", mysql.Arg(time.Now())).
Where(mysql.Quote("id").EQ(mysql.Arg(1)))
複数条件での UPDATE
UPDATE users SET active = ?
WHERE created_at < ? AND last_login IS NULL
mysql.Update("users").
Set("active", mysql.Arg(false)).
Where(
mysql.Quote("created_at").LT(mysql.Arg(time.Now().AddDate(0, -6, 0))),
mysql.Quote("last_login").IsNull(),
)
JOIN を使用した UPDATE
UPDATE users u
JOIN user_profiles p ON u.id = p.user_id
SET u.status = ?
WHERE p.verified = ?
mysql.Update("users").As("u").
Join("user_profiles").As("p").
On(mysql.Quote("u", "id").EQ(mysql.Quote("p", "user_id"))).
Set("u.status", mysql.Arg("verified")).
Where(mysql.Quote("p", "verified").EQ(mysql.Arg(true)))
LIMIT 付きの UPDATE
UPDATE users SET processed = ?
WHERE processed = ?
ORDER BY created_at ASC
LIMIT ?
mysql.Update("users").
Set("processed", mysql.Arg(true)).
Where(mysql.Quote("processed").EQ(mysql.Arg(false))).
OrderBy(mysql.Quote("created_at").Asc()).
Limit(100)
計算式を使用した UPDATE
UPDATE products SET price = price * ?
WHERE category = ?
mysql.Update("products").
Set("price", mysql.Quote("price").Mul(mysql.Arg(1.1))).
Where(mysql.Quote("category").EQ(mysql.Arg("electronics")))
JSON フィールドの UPDATE
UPDATE users SET metadata = JSON_SET(metadata, '$.last_login', ?)
WHERE id = ?
mysql.Update("users").
Set("metadata", mysql.F("JSON_SET",
mysql.Quote("metadata"),
mysql.Arg("$.last_login"),
mysql.Arg(time.Now()))).
Where(mysql.Quote("id").EQ(mysql.Arg(1)))
CASE 文を使用した UPDATE
UPDATE users SET status =
CASE
WHEN last_login > ? THEN 'active'
WHEN last_login > ? THEN 'inactive'
ELSE 'dormant'
END
mysql.Update("users").
Set("status", mysql.Case().
When(mysql.Quote("last_login").GT(mysql.Arg(time.Now().AddDate(0, 0, -30))), mysql.Arg("active")).
When(mysql.Quote("last_login").GT(mysql.Arg(time.Now().AddDate(0, -3, 0))), mysql.Arg("inactive")).
Else(mysql.Arg("dormant")))
これらの例は、Bob を使用して MySQL で実行可能な様々な UPDATE クエリパターンを示しています。