問題タブ [subquery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQL: サブクエリに基づいて結果セットを制限する必要がある
私はかなり奇妙な問題に遭遇しました。mysql データベースで使用する次のサンプル データがあります。
何が起こっているかというと、別のプロセス (私の制御下にない) がデータ パケットを受信し、それらを到着時刻のタイムスタンプと共にデータベースに直接格納しています。パケットはバーストで到着するはずです... a、bは互いに近くに到着し、インデックス1と2が付けられ、各パケットには送信されたパケットの「合計」数が含まれます。key は通常の自動増分主キーです。
私が必要としているのは、到着した最新のリストを表示するビューです (すべてのパケットが到着していない場合、部分的なリストは許容されます)。
上記のクエリの場合、結果は理想的には「f」のみになるはずですが、それを行う方法がわかりません。別の方法で取得できない場合は、"a" と "f" を返すこともできます。つまり、select ステートメントによって捕捉される少量の余分なデータは大きな問題ではありません。「f」が到着する前の期間の正しい戻り値は、c、d、および e です。
私の一般的な考えは、次のようなものです。
お気づきの方もいらっしゃると思いますが、LIMIT 句でサブクエリを実行することはできません (少なくとも mysql では)。誰かがこの問題を解決するための別のアプローチを持っていますか? 上記のクエリは、最近の ID の小さなリストに JOIN をネストすることでより明確にすることができますが、それでもサブクエリに LIMIT サブクエリの問題が残ります。
2 段階のクエリであるため、これは比較的簡単です。問題は、それが VIEW の選択ステートメントを定義する必要があることです。
間違ったSQLの例を修正するために編集
mysql - INSERT ステートメント内でサブクエリを使用できますか?
1 つのフィールド値が別のテーブルから計算された状態で、テーブルに行を挿入する必要があります。2 つのクエリを実行して競合状態になる危険を冒すよりも、すべてを 1 つのステートメントで実行する方がよいと考えました。
...しかし、これは機能しません。これを1つのステートメントで達成できる方法はありますか? そうでない場合、お勧めは何ですか?
sql - Mysql サブクエリの質問
次の 2 つのテーブルがあるとします。
0 より上Foo.name
に対応するものがないすべての s を見つけるにはどうすればよいですか?Bar,value
例えば:
sql - マップテーブルに含まれていない2つのテーブルから値を選択するにはどうすればよいですか?
次のテーブルがあるとしましょう。
- お客様
- 製品
- CustomerProducts
値がマップテーブルにないCustomersテーブルとProductsテーブルから選択する方法はありますか?基本的に、私は顧客と彼らが所有していない製品の一致したリストが必要です。
もう1つの工夫:製品ごとに1人の顧客をペアリングする必要があります。したがって、5人の顧客が製品Aを持っていない場合、クエリの最初の顧客だけが製品Aを持っている必要があります。したがって、結果は次のようになります。
(すべての顧客が製品Bを所有し、複数の顧客が製品A、C、およびDを所有していると想定します)
- 顧客1、製品A
- 顧客2、製品C
- 顧客3、製品D
最後の工夫:SQLサーバーのUPDATEステートメントの一部としてこのクエリを実行する必要があります。したがって、最初の行から値を取得する必要があります。
顧客1、製品A
顧客レコードを次のようなものに更新します
しかし、このプロセス全体を1つのSQLステートメントで実行できれば便利です。したがって、クエリを1回実行すると、1人の顧客が所有していない製品で更新されます。それがあなたにとってあまり混乱しないことを願っています!前もって感謝します!
mysql - Cache/Re-Use a Subquery in MySQL
I have a very complex MySQL query that includes use of the same subquery three times. Will MySQL actually run the subquery three times? (It's an expensive one.) If so, is there a way for me to tell MySQL to save or cache the results so it won't do that? I could save the data in a large array then re-feed it to MySQL, but I'd rather not move it out and back into the database like that.
This is the subquery that appears three times:
And here's an example of the full query in which the query appears:
sql - SQL クエリの質問 (結合/サブクエリの可能性はありますか?)
2 つのテーブル ( ManagementとEmployee ) があります。
管理テーブルは、過去数年間に会社 X を管理してきたさまざまな管理チームを追跡します。各管理チームには ID (例: managementnr) が与えられ、各チームには CEO (つまり ceoname) がいます。
employee テーブルは、会社 X で働く従業員を追跡します (基本的には、従業員の名前と、どの管理チームが採用したかだけです)。
SQL コードは次のとおりです。
最も多くの従業員が雇用されている managementNR を取得する SQL クエリを作成しようとしています。私は使用してみました:
しかし、私は取得し続けます:
(私はオラクルを使用しています)
何時間も Google-fu を使用した後、ようやくこのエラーの意味がわかりましたが、このクエリを作成する他の方法はまだ考えられません。サブクエリ/結合を使用してみましたが、まだ何もありません。私は一般的にSQLに非常に慣れていません。誰かが助けることができれば、私は本当に感謝しています!
お時間をいただきありがとうございます =] --
エヴァン・レストレンジ
sql - CTEとサブクエリの違いは?
この投稿から次の手順で ROW_NUMBER を使用するには?
回答には 2 つのバージョンがありsub-query
、一方は a を使用し、もう一方は aを使用しCTE
て同じ問題を解決します。
さてCTE (Common Table Expression)
、「サブクエリ」よりも a を使用する利点は何ですか(したがって、クエリが実際に行っていることをより読みやすくします)
CTE
オーバーを使用する唯一の利点は、sub-select
実際に. CTE が単純な (非再帰的な) CTE として使用される場合、これら 2 つの間に他に違いはありますか?sub-query
mysql - サブクエリを使用するとクエリの実行が遅くなるが、個別に実行するとそうではない原因は何ですか?
次のようなものがあります。
問題は、クエリに非常に長い時間がかかることです(> 2分)が、サブクエリを取得して個別に実行し、IDを内破してメインクエリに挿入すると、1秒未満で実行されます。データの取得と内破。
メソッドとキーの両方の説明が適切に同じ方法で使用されていることを確認しました。サブクエリは 200 を超える ID を返しません。
サブクエリ メソッドにこれほど長い時間がかかる原因は何でしょうか?
ところで、上記のクエリは結合で記述できることは知っていますが、私が持っているクエリはそうではありません。これは単純化されたバージョンです。
MySQL 5.0.22 を使用。