Golang では、SQL 結合クエリ ステートメントは複数の SQL クエリ ステートメントを使用してクエリ結果セットに結合します。この方法を使用すると、2 つ以上のテーブルを結合してクエリを実行し、クエリ効率を向上させることができます。この記事では、Golang を使用して SQL でユニオン クエリを実行する方法を紹介します。
SQL ユニオン クエリとは何ですか?
SQL Union Query は、2 つ以上の SELECT ステートメントの結果セットを 1 つの結果セットに結合するプロセスを指します。集計クエリでクエリされる列の数、列の順序、および列の種類は、まったく同じである必要があります。ユニオン クエリは、複数のクエリの代わりに複数のクエリ ステートメントを組み合わせることでクエリ効率を向上させる、比較的効率的なクエリ方法です。
SQL では、ユニオン クエリは UNION 演算子を使用して実装されます。 UNION 演算子は 2 つの結果セットを結合し、重複する行を削除します。重複した行を保持したい場合は、UNION ALL 演算子を使用できます。
Golang のユニオン クエリ
Golang で SQL を使用して結合クエリを実行する場合、まずデータベースに接続し、SQL ステートメントを使用して結合クエリを実行する必要があります。この例では、Go 言語 ORM ライブラリ GORM を使用して MySQL データベースに接続し、ユニオン クエリを使用して 2 つのテーブルからデータを取得します。
GORM を使用して SQL ユニオン クエリを実装するには、Model 関数を呼び出して 2 つの異なるモデル オブジェクトを作成し、Select 関数を使用してそれらを結合する必要があります。 Select 関数は、取得する列を選択し、結果を新しいモデル オブジェクトに保存します。
以下は、Golang および GORM ライブラリを使用して SQL ユニオン クエリを実装する例です。
package main import ( "fmt" "time" "gorm.io/driver/mysql" "gorm.io/gorm" ) type User struct { ID uint `gorm:"primary_key"` Name string Age int Email string CreatedAt time.Time } type Order struct { ID uint `gorm:"primary_key"` UserID uint Amount float64 CreatedAt time.Time } func main() { dsn := "user:password@tcp(localhost:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } var users []User db.Model(&User{}).Select("users.name, orders.amount").Joins("inner join orders on orders.user_id = users.id").Find(&users) fmt.Println(users) }
上記のコード例では、まず User と Order の 2 つのモデル オブジェクトを定義します。次に、「database_name」という名前の MySQL データベースに接続し、GORM の Model 関数を使用して「users」という名前の新しいモデル オブジェクトを作成しました。 Select 関数では、取得する必要がある列を選択し、Joins 関数で内部結合クエリを定義します。最後に、Find 関数を使用してクエリ結果を「users」というスライスに保存し、端末に出力します。
結論
Golang では、ORM ライブラリ GORM を使用して MySQL データベースに接続し、SQL ユニオン クエリを実行できます。結合クエリを使用して複数のテーブルのデータを結合し、クエリの効率を向上させます。上記のサンプル コードを使用すると、アプリケーションでの SQL ユニオン クエリの実装がより簡単かつ効率的になります。
以上がGolang で SQL を共同クエリに使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。