登录
首页 >  Golang >  Go问答

对Go和mysql进行查询时不会返回全部列

来源:stackoverflow

时间:2024-03-21 22:36:25 307浏览 收藏

使用 Go 语言对 MySQL 执行查询时,无法返回所有指定列。查询返回 id、artist 和 picture 列,而 song_name 列缺失。修改后的代码解决了这个问题,通过调整查询语句的顺序和列名,成功检索到了所有四列。

问题内容

我需要用 go 获取 4 列。当我在 mysql 中运行查询时,我得到了所有 4 列,但是当我尝试使用 go 执行查询时,我只得到了 3 列。 go代码是:

type song struct {
    id      int
    artist  string
    picture string
    name    string
}

type data struct {
    songs []song
}

db, err := sql.open(sqlserver, sqldata)
checkerr(err)

rows, err := db.query("select s.id, a.name a_name, al.picture, s.song_name from music_songs s join music_albums al on s.album_id = al.id join music_artists a on a.id = s.artist_id where s.artist_id = ? order by s.id asc, al.id asc", ar)
checkerr(err)

var songs []song
for rows.next() {
    var id int
    var artist string
    var picture string
    var name string

    err = rows.scan(&id, &artist, &picture, &name)
    songs = append(songs, song{id, artist, picture, name})
}

fmt.println(songs)

当我用 go 运行它时,我得到了列:id、艺术家和图片。我无法获取 song_name 列。

当我在 mysql 中运行它时,我得到:

+----+---------+---------+--------------------------+
| id | a_name  | picture | song_name                |
+----+---------+---------+--------------------------+

解决方案


我不知道如何以及为什么,但这段代码可以工作:

type song struct {
        Id      int64
        Artist  string
        Name    string
        Picture string
    }

    type data struct {
        Songs []song
    }


    // Open database
    db, err := sql.Open(sqlServer, sqlData)
    checkErr(err)

    rows, err := db.Query("SELECT s.id, s.song_name, a.name, al.picture as artistName FROM music_songs s JOIN music_albums al ON s.album_id = al.id JOIN music_artists a ON a.id = s.artist_id WHERE s.artist_id = ? ORDER BY s.id ASC, al.id ASC", ar)
    checkErr(err)

    var id int64
    var songName string
    var artistName string
    var albumPicture string

    var songs []song
    for rows.Next() {

        err = rows.Scan(&id, &songName, &artistName, &albumPicture)
        songs = append(songs, song{id, songName, artistName, albumPicture})

    }

本篇关于《对Go和mysql进行查询时不会返回全部列》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>