Как сделать запрос влево, используя sqlx?
Я хотел бы получить результаты от joke
стол, в котором шутят jokevote
Таблица.
Вот запрос:
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
", userId, userId) if err! = nil {fmt.Println ("% v \ n ", err)
}
Но я получаю эту ошибку:
Ошибка 1064: у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который следует использовать рядом с WHERE joke.user_id=? И jokevote.user_id=? AND jokevote.vote=1'в строке 1
Я также попробовал:
err := shared.Dbmap.Select(&jokes, " SELECT *
FROM joke
LEFT JOIN jokevote
WHERE joke.user_id=jokevote.user_id
AND jokevote.vote=?
", 1)
И получил ту же ошибку. Я просмотрел документы и не смог найти ни одного примера таких соединений. Так интересно, как я могу это исправить.
2 ответа
Примеры будут мне в документах mariadb. Чего вам не хватает, так это on
предложение, которое говорит mariadb, как объединить 2 таблицы. Вы не можете использовать синтаксис соединения старой школы с left join
положить критерии объединения в where
пункт.
SELECT * FROM joke
LEFT JOIN jokevote ON joke.user_id=jokevote.user_id
WHERE jokevote.vote=?
Sql запрос должен выглядеть так:
"SELECT * FROM joke LEFT JOIN jokevote ON joke.user_id=jokevote.user_id WHERE jokevote.vote=?"