Open2

Tips:golang-squirrelでUNION,JOIN

ないつぅーないつぅー

https://github.com/Masterminds/squirrel/issues/20
このISSUEのalessandrozucca-pさん(Nov 12, 2024)のやり方の焼き直しだが...

unionBuilder := firstBuilder.PrefixExpr(
        secondBuilder.Suffix("UNION ALL")
    ).
    Offset(25).
    Limit(25).
    OrderBy(order, "sort_posted_at DESC", "sort1 DESC", "sort2 ASC")

Prefix、Suffix系の関数を組み合わせることで自然とUNION句を結合させることが可能。
SQLのPlaceholderもちゃんと動く。

ないつぅーないつぅー

サブクエリをJOIN

JoinClause関数でサブクエリのビルダーにPrefixとSufixでJOIN固定文字を付けて結合

// サブクエリ
subBuilder := squirrel.Select("*").From('product')

// メインクエリ
mainBuilder := squirrel.Select("*").
    From("content").
    JoinClause(
        subBuilder.Prefix("LEFT JOIN(").
            Suffix(") AS product ON product.id = content.product_id"),
    )