select * from(<subquery>)order ofder ofder; select *の形式で副問合せを作成する方法。 -- go フィールド と go-gorm フィールド 関連 問題

How to construct subquery in the form of SELECT * FROM (<subquery>) ORDER BY column;?












1
vote

問題

日本語

Postgresデータベースと対話するためのgormを使用しています。私は、この質問を使用するクエリで注文しようとしています。 A>それがそれほど簡単ではないのかどうかを文書化します。だから私は

の形式でクエリを終わらせる必要があります <事前> <コード> SELECT * FROM (<subquery>) ORDER BY column;

最初の一見 db.QueryExpr() を使用して、照会を表現して別のクエリを作成するために使用する必要があるようです。ただし、FROM句を直接指定する簡単な方法が簡単な方法ではないようです。 db.Model(expr) または<コード> db.Table(fmt.Sprint(expr)) を使用してみましたが、モデルは完全に無視されているようです、そして<コード> fmt.Sprint(expr) は私が考えたことを正確に返しません。式にはいくつかの個人的な変数が含まれています。元のクエリを完全に解析された文字列に変えることができれば、 db.Table(query) を使用できましたが、実行せずにクエリを文字列として生成できるかどうかわかりません。

完全に積極的に構築されている場合は、他のクエリで留めて注文を行おうとしていますか?

英語

I am using gorm to interact with a postgres database. I'm trying to ORDER BY a query that uses DISTINCT ON and this question documents how it's not that easy to do that. So I need to end up with a query in the form of

 SELECT * FROM (<subquery>) ORDER BY column; 

At first glance it looks like I need to use db.QueryExpr() to turn the query I have into an expression and build another query around it. However it doesn't seem gorm has an easy way to directly specify the FROM clause. I tried using db.Model(expr) or db.Table(fmt.Sprint(expr)) but Model seems to be completely ignored and fmt.Sprint(expr) doesn't return exactly what I thought. Expressions contain a few private variables. If I could turn the original query into a completely parsed string then I could use db.Table(query) but I'm not sure if I can generate the query as a string without running it.

If I have a fully built gorm query, how can I wrap it in another query to do the ORDER BY I'm trying to do?

</div
     

回答リスト

0
 
vote

実行されるRAW SQL(SQLサブクエリを含むものを含む)とgormを使用してオブジェクトに追加された結果を作成したい場合は、<コード> .Raw() および<コード> $this->setAction('thanks'); 0 メソッド:

<事前> <コード> $this->setAction('thanks'); 1

結果の行のように構成されているオブジェクトへのポインタ参照を、 use CakeRoutingRouter; echo Router::url(['_name' => 'view-details']); echo Router::url(['controller' => 'Articles', 'action' => 'view', 'id' => 15]); 13 を使用する方法と非常に同様に、その結​​果、結果の行のように構成されていますが、 $this->setAction('thanks'); 2 に渡します。 <コード> $this->setAction('thanks'); 4 は、クエリ内の $this->setAction('thanks'); 5 を使用してクエリにデータを追加し、関数へのコンマ区切り入力として値を追加することもできます。

<事前> <コード> use CakeRoutingRouter; echo Router::url(['_name' => 'view-details']); echo Router::url(['controller' => 'Articles', 'action' => 'view', 'id' => 15]); 16

SQL Builder、 998876617 、および<コード> $this->setAction('thanks'); 8 の使用方法について詳しくは、ドキュメント内の例を参照してください。 http://gorm.io/advanced.html#sql-builder

 

If you want to write raw SQL (including one that has a SQL subquery) that will be executed and the results added to an object using gorm, you can use the .Raw() and .Scan() methods:

query := `     SELECT sub.*     FROM (<subquery>) sub     ORDER BY sub.column;` db.Raw(query).Scan(&result) 

You pass a pointer reference to an object to .Scan() that is structured like the resulting rows, very similarly to how you would use .First(). .Raw() can also have data added to the query using ? in the query and adding the values as comma separated inputs to the function:

query := `     SELECT sub.*     FROM (<subquery>) sub     WHERE         sub.column1 = ?         AND sub.column2 = ?     ORDER BY sub.column;` db.Raw(query, val1, val2).Scan(&result) 

For more information on how to use the SQL builder, .Raw(), and .Scan() take a look at the examples in the documentation: http://gorm.io/advanced.html#sql-builder

</div
 
 

関連する質問

3  Golangの畑でフィールドを隠す  ( Hide fields in golang gorm ) 
私は私のゴランプロジェクトで草刈りを使っています。 exctly私はREST-APIを持っています、そして私は要求を受け取り、プロセスを作り、オブジェクトを返します。たとえば、次のような構造ユーザーがあります。 <事前> <コード> type User str...

1  GO-GORMとの関連付けに関するAREB句との皆様の関係を照会する方法  ( How to query a many2many relationship with a where clause on the association wit ) 
以下のエンティティを持っています: <コード> type User struct { ID string Name string Groups []Groups `gorm:"many2many:users_groups"` } t...

2  耕作を使用してモデルなしでレコードを取得する  ( Retrieving records without model using gorm ) 
Postgre DBと少しGo APIを持っています。 次のFUNCのアイデアは、JSON応答内のすべてのレコードを取得することです。テーブル名を知っているだけで、テーブルのフィールド名がわかりません。 コード: <事前> <コード> func indexP...

1  Golang gormでは、非スピードの予圧を行うことは可能ですか?  ( Is it possible to do an unscoped preload in golang gorm ) 
このようなコールチェインに非符号化()を追加する: <事前> <コード> db.Unscoped().Preload("Orders").Find(&users) find()に影響を与えますが、preload()には影響しません。 preload()...

-2  配列ポインタのスライスの内容を取得/印刷するにはどうすればよいですか。  ( How can i get print the content of a slice of array pointers ) 
次の構造と機能を持っています: <事前> <コード> room3 DBコールから返されたデータを取得/印刷する方法は? ありがとう! ...

0  gorm 2はgithub.com / guregu/null/zeroを使うことができません  ( Gorm 2 is not able to use github com guregu null zero ) 
文字列やintのような標準データ型を使用し、V2より前のバージョンでうまく機能していました。 zero.string を使用している場合、v2では次のエラーが発生します。 github.com/dhullgu / null/zero.String's Rel...

0  データベースの挿入中に埋め込み構造体フィールドを無視する方法を教えてください。  ( How can i ignore an embedded struct field while inserting database ) 
私は2つのデータベーステーブルを持っています。 Aは3列を持っていて、それらはx、y、zです。 Bは2列を持っており、それらはX、W です。 私の外観はこのようなものです。 <事前> <コード> type Base struct { X int ...

0  gorm sql構造タグの縮小構文エラー  ( Gorm sql structure tag shrowing syntax error ) 
非常に単純なモデルを持っていて、私は UUID になるように宣言しようとしていますので、この記事 <事前> <コード> type UserUpload struct { gorm.Model UUID string `sql:"type:uuid"...

0  GO LANGを使用してMySQL DB操作を実行する際に、SQLが内部的に準備されたステートメントスタイル実行に変換される理由  ( Why sql is converted into prepared statement style execution internally in perfo ) 
「データベース/ SQL」またはgormを使用して、MySQL DBで実行している任意のクエリ(選択/更新)は、準備済みステートメントに内部的に変換されます。複数のメッセージ交換が行われています。 準備文[クライアント - &gt; db] DB応答[D...

2  ネストされた構造と関係を持つ要素の塊とスライス  ( Gorm and slice of elements with nested structs and relations ) 
gorm mysqlドライバ。 私は以下の構造を持っています... <事前> <コード> type City struct { ID uint Name string Slug string StateID uint ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有