如何使用 sqlx 进行 LEFT JOIN 查询?

How to make LEFT JOIN query using sqlx?

我想从 joke table 中得到笑话被点赞的结果 jokevotetable。

这里是查询:

var jokes []model.Joke
err := shared.Dbmap.Select(&jokes, "    SELECT  *
    FROM  joke
    LEFT JOIN  jokevote
    WHERE  joke.user_id=?
      AND  jokevote.user_id=?
      AND  jokevote.vote=1

", 用户 ID, 用户 ID) 如果错误!=无{ fmt.Println("%v\n", 错误)
}

但是我得到这个错误:

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE joke.user_id=? AND jokevote.user_id=? AND jokevote.vote=1' at line 1

我也试过:

err := shared.Dbmap.Select(&jokes, "    SELECT  *
    FROM  joke
    LEFT JOIN  jokevote
    WHERE  joke.user_id=jokevote.user_id
      AND  jokevote.vote=?

", 1)

同样的错误。 我查看了 the docs,但找不到此类连接的任何示例。 所以想知道我该如何解决它。

Sql 查询应该是这样的:

"SELECT * FROM joke LEFT JOIN jokevote ON joke.user_id=jokevote.user_id WHERE  jokevote.vote=?"

我会在 mariadb 文档中找到示例。您缺少的是 on 子句,该子句告诉 mariadb 如何连接 2 个表。您不能使用带有 left join 的老式连接语法,将连接条件放入 where 子句中。

SELECT * FROM joke
LEFT JOIN jokevote ON joke.user_id=jokevote.user_id
WHERE jokevote.vote=?