go-sqlbuilder icon indicating copy to clipboard operation
go-sqlbuilder copied to clipboard

how to use update with select in mysql?

Open oh0123 opened this issue 1 year ago • 2 comments

here is code

UPDATE T1
[INNER JOIN | LEFT JOIN] T2 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2, 
    T2.C3 = expr
WHERE condition

oh0123 avatar Jul 09 '24 11:07 oh0123

There is no built-in support for JOIN in UpdateBuilder. Instead, you can use SQL() method to build this SQL.

ub := sqlbuilder.Update("T1").SQL("INNER JOIN T2 ON T1.C1 = T2. C1")
ub.Set(
    "T1.C2 = T2.C2",
    ub.Assign("T2.C3", 123),
)
ub.Where(ub.In("T1.C4", "foo", "bar"))

Here is a live demo for you. https://go.dev/play/p/xfwm9P-55sX

huandu avatar Jul 10 '24 09:07 huandu

@huandu that‘s really nice, I will try it. thanks!

oh0123 avatar Jul 11 '24 06:07 oh0123