Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan SQL untuk pertanyaan bersama di Golang

Cara menggunakan SQL untuk pertanyaan bersama di Golang

PHPz
PHPzasal
2023-04-24 09:11:08955semak imbas

Di Golang, pernyataan pertanyaan bersama SQL menggunakan berbilang pernyataan pertanyaan SQL untuk digabungkan menjadi set hasil pertanyaan Dengan menggunakan kaedah ini, dua atau lebih jadual boleh ditanya secara bersama dan kecekapan pertanyaan boleh dipertingkatkan. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan pertanyaan kesatuan dalam SQL.

Apakah pertanyaan kesatuan SQL?

SQL Union Query merujuk kepada proses menggabungkan set hasil dua atau lebih pernyataan SELECT ke dalam satu set hasil. Bilangan lajur, susunan lajur dan jenis lajur yang disoal dalam pertanyaan agregat mestilah betul-betul sama. Pertanyaan kesatuan ialah kaedah pertanyaan yang agak cekap yang meningkatkan kecekapan pertanyaan dengan menggabungkan berbilang pernyataan pertanyaan dan bukannya berbilang pertanyaan.

Dalam SQL, pertanyaan kesatuan dilaksanakan menggunakan pengendali UNION. Operator UNION menggabungkan dua set hasil dan mengalih keluar baris pendua. Jika anda ingin menyimpan baris pendua, anda boleh menggunakan operator UNION ALL.

Pertanyaan kesatuan dalam Golang

Apabila menggunakan SQL dalam Golang untuk melaksanakan pertanyaan kesatuan, kita perlu terlebih dahulu menyambung ke pangkalan data dan menggunakan pernyataan SQL untuk melaksanakan pertanyaan kesatuan. Dalam contoh ini, kami akan menggunakan perpustakaan ORM bahasa Go GORM untuk menyambung ke pangkalan data MySQL dan menggunakan pertanyaan kesatuan untuk mendapatkan data daripada dua jadual.

Untuk menggunakan GORM untuk melaksanakan pertanyaan kesatuan SQL, kita perlu memanggil fungsi Model untuk mencipta dua objek model yang berbeza dan menggunakan fungsi Pilih untuk menggabungkannya bersama-sama. Fungsi Pilih memilih lajur untuk diambil dan menyimpan keputusan dalam objek model baharu.

Berikut ialah contoh penggunaan perpustakaan Golang dan GORM untuk melaksanakan pertanyaan kesatuan 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)
}

Dalam contoh kod di atas, kami mula-mula mentakrifkan dua objek model: Pengguna dan Pesanan. Kami kemudiannya menyambung ke pangkalan data MySQL bernama "database_name" dan mencipta objek model baharu bernama "pengguna" menggunakan fungsi Model GORM. Dalam fungsi Pilih, kami memilih lajur yang perlu diambil dan menentukan pertanyaan gabungan dalaman dalam fungsi Sertai. Akhir sekali, kami menggunakan fungsi Cari untuk menyimpan hasil pertanyaan dalam kepingan yang dipanggil "pengguna" dan mencetaknya ke terminal.

Kesimpulan

Di Golang, kami boleh menggunakan perpustakaan ORM GORM untuk menyambung ke pangkalan data MySQL dan melakukan pertanyaan kesatuan SQL. Gunakan pertanyaan bersama untuk menggabungkan data daripada berbilang jadual dan meningkatkan kecekapan pertanyaan. Menggunakan kod sampel di atas, melaksanakan pertanyaan kesatuan SQL dalam aplikasi anda akan menjadi lebih mudah dan lebih cekap.

Atas ialah kandungan terperinci Cara menggunakan SQL untuk pertanyaan bersama di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn