Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengisih rekod pangkalan data di Golang?

Bagaimana untuk mengisih rekod pangkalan data di Golang?

WBOY
WBOYasal
2024-06-03 13:30:57540semak imbas

Di Golang, hasil pertanyaan boleh diisih menggunakan klausa ORDER BY dalam pakej pangkalan data/sql. Sintaks: func (db *DB) Pertanyaan(rentetan pertanyaan, args ...antara muka{}) (*Baris, ralat) Contoh pengisihan: PILIH * DARI pengguna ORDER OLEH nama ASC Pilihan pengisihan lain: DESC (menurun), berbilang lajur ( Dipisahkan koma), tertib isih nilai NULL (NULLS FIRST atau NULLS LAST) Kes praktikal: Isih pesanan dalam tertib menurun mengikut "tarikh_pesanan": PILIH * DARI pesanan ORDER OLEH order_date DESC.

如何对 Golang 中的数据库记录进行排序?

Bagaimana untuk mengisih rekod pangkalan data di Golang?

Apabila menggunakan pakej pangkalan data/sql untuk mengendalikan pangkalan data di Golang, anda boleh menggunakan klausa ORDER BY untuk mengisih hasil pertanyaan. ORDER BY 子句对查询结果进行排序。

语法:

func (db *DB) Query(query string, args ...interface{}) (*Rows, error)

排序示例:

以下示例演示如何对名为 "users" 的表中的记录按 "name" 列升序排序:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 连接到数据库
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 构建查询
    query := `SELECT * FROM users ORDER BY name ASC`

    // 执行查询
    rows, err := db.Query(query)
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    // 遍历结果
    for rows.Next() {
        var id int
        var name, email string
        if err := rows.Scan(&id, &name, &email); err != nil {
            panic(err)
        }
        fmt.Printf("%d %s %s\n", id, name, email)
    }
}

其他排序选项:

  • DESC:降序排序
  • 多个列:使用逗号分隔多个列,例如:ORDER BY name DESC, age ASC
  • NULL 值:使用 NULLS FIRSTNULLS LAST
Sintaks:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 连接到数据库
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 构建查询
    query := `SELECT * FROM orders ORDER BY order_date DESC`

    // 执行查询
    rows, err := db.Query(query)
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    // 遍历结果
    for rows.Next() {
        var orderID, customerID int
        var orderDate string
        if err := rows.Scan(&orderID, &customerID, &orderDate); err != nil {
            panic(err)
        }
        fmt.Printf("%d %d %s\n", orderID, customerID, orderDate)
    }
}

Isih contoh:

🎜Contoh berikut menunjukkan cara mengisih rekod dalam jadual bernama "pengguna" dalam tertib menaik mengikut lajur "nama": 🎜rrreee 🎜🎜 pilihan pengisihan lain 🎜
  • 🎜DESC: 🎜Isih dalam tertib menurun🎜
  • 🎜Berbilang lajur: 🎜Gunakan koma untuk memisahkan berbilang lajur, contohnya: ORDER BY nama DESC, umur ASC🎜🎜Nilai NULL: 🎜Gunakan NULLS FIRST atau NULLS LAST untuk menentukan sama ada hendak meletakkan nilai NULL ​​pada permulaan atau akhir set hasil 🎜🎜🎜🎜Praktikal contoh: 🎜🎜🎜Andaikan kita mempunyai jadual "pesanan", yang mengandungi lajur "id_pesanan", "id_pelanggan" dan "tarikh_pesanan". Kita boleh menulis program Golang untuk mengisih pesanan mengikut "tarikh_pesanan" dalam susunan menurun: 🎜rrreee
  • Atas ialah kandungan terperinci Bagaimana untuk mengisih rekod pangkalan data 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