Я использую gorm для взаимодействия с базой данных postgres. Я пытаюсь ORDER BY запрос, который использует DISTINCT ON и этот вопрос документирует, как это не так просто сделать. Поэтому мне нужно получить запрос в виде
SELECT * FROM (<subquery>) ORDER BY column;
На первый взгляд кажется, что мне нужно использовать db.QueryExpr()
, чтобы превратить мой запрос в выражение и построить вокруг него другой запрос. Однако не похоже, что у gorm есть простой способ напрямую указать предложение FROM. Я пытался использовать db.Model(expr)
или db.Table(fmt.Sprint(expr))
, но Модель, похоже, полностью игнорируется, а fmt.Sprint(expr)
возвращает не совсем то, что я думал. Выражения содержат несколько частных переменных. Если бы я мог превратить исходный запрос в полностью проанализированную строку, я мог бы использовать db.Table(query)
, но я не уверен, что смогу сгенерировать запрос в виде строки, не запуская его.
Если у меня есть полностью построенный запрос gorm, как я могу обернуть его в другой запрос, чтобы выполнить ORDER BY, который я пытаюсь выполнить?