問題タブ [in-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.

0 投票する
2 に答える
915 参照

sql - Oracle Correlated Subquery Nesting Limit の回避策はありますか?

相関サブクエリを使用しようとしているのに、Oracle のネスト制限に達している状況があります。オラクルが持つ別の機能が欠けている可能性があるため、この質問をここに投稿すると思いました。このネストの制限に達せずに以下の SQL を書き直す方法を知っている人はいますか?また、以下の制約内に留まりますか?

制約:

  • IN 句の SQL のみを変更できます(制御できない制約のため)
  • 示されているように、集計が発生する前に、親クエリのフィルタリングを集計サブクエリに適用する必要があります。
  • 親フィルターが適用された後、colB の集計で 0 を除外します

以下のコードは、Oracle の制限に達する前にこれを試したことを示しています。また、私が使用している Oracle のバージョンは 11.2.0.2 です。どんな助けでも大歓迎です。ありがとう!

上記の SQL を実行するときに探していたもののサンプル入力/出力を次に示します。

t1.colA BETWEEN 1 And 2 を使用した t3.colB の SUM の結果:

t1.colA BETWEEN 1 And 2 を使用した IN 句のサブクエリの結果:

t1.colA BETWEEN 1 And 2 を使用した最上位クエリの結果:

提供された回答のいくつかに取り組んだ後、単純な CASE ステートメントを使用して、Oracle のネスト制限を回避する方法を見つけました。

残念ながら、これにより本当の問題が表面化しました。これはサブクエリであるため、一度に t1.colA 範囲の 1 つの値のみを反復処理できます。これにより、サブクエリでその範囲内の分析合計を実行できなくなっているようです。IN 句内の SQL しか変更できないため、この問題の解決策がわかりません。誰か提案があれば教えてください。ありがとう。

0 投票する
1 に答える
1022 参照

sql-server - 空のサブセットを持つ Tsql IN 句

IN空のサブセットにも一致するステートメントを設定することは可能ですか?

これは私のクエリです:

#subsetが空の場合もそのレコードを希望します。回避策は次のとおりです。

ただし、 ( SELECT * FROM #subset) はそれほど単純なクエリではなく、空のサブセットでも "IN" を使用するスマートな方法があることを知りたいです。

0 投票する
1 に答える
327 参照

mysql - コンマ区切りのサブクエリとのSoundex比較?

ユーザーのテーブルに対して soundex クエリを実行しています。ユーザーのサブクエリは、カンマ区切りの文字列リストとして提供されます。

次のようなことをしたいのですが、これを機能させるための書き込み構文が見つかりません。

後で、soundex 値を列 ID にマップしたテーブルを作成して、このクエリを最適化する予定ですが、サブクエリがコンマ区切りのリストの場合、匿名列を参照できるかどうかわかりません。エイリアスを追加する方法、またはこのリストを soundex 値のリストに変換して比較を実行するにはどうすればよいですか?

0 投票する
3 に答える
1045 参照

sql-server - CASE-WHEN がサブクエリを返すときの TSQL エラー

WHEN または ELSE のいずれかがサブクエリを返すように、IN() ステートメントに CASE-WHEN ステートメントをネストする方法はありますか。私にとって、それは問題ではないはずですが、どういうわけかエラーが発生しています:

「サブクエリが複数の値を返しました。」

IN()複数の値を処理することになっています!

エラーを再現するための小さな例を次に示します。