1

表向きは比較的簡単なSQLクエリであるべきものを書こうとしていますが、それらを機能させることはできません。

次のようなクエリを作成することは可能ですか。

select t.name 
  from (select * 
          from mystoredproc(1,2,3) as t) 
 where t.name = 'foobar'

上記のクエリには 2 つの問題があります。

1)まず第一に、上記のステートメントは機能しません。私の db エンジン (mySQL) は文句を言います:

エラー 1054 (42S22): 'フィールド リスト' の列 't.name' が不明です

2) 返されたテーブル t を SELF JOIN で使用したい。ただし、 mystoredproc(...) を再度呼び出す必要はありません。これは非常に高価な呼び出しであるためです。

これらの問題を解決する方法を知っている人はいますか?

ところで、私は mySQL を使用していますが (今のところ)、提示された SQL スニペットがデータベースに依存しない (つまり ANSI SQL) 場合を希望します。

4

1 に答える 1

11

) as t)のようにを) tに置き換えます。

select t.name from (select * from mystoredproc(1,2,3)) t where t.name = 'foobar'

2 番目の問題について: 結果をmystoredproc一時テーブルにフィードし、そこから結果をフィードするSELECTと、手間をかけずに自己結合を行うことができます。

于 2009-12-19T17:36:15.283 に答える