なし自体にテーブルを結合:が、私はこれを行うことによって自分自身にテーブルを結合し、クロスを推薦人見てきた2つのクエリ
SELECT *
FROM tbl AS A, tbl AS B
WHERE A.col1 = 1 AND B.col1 = 1
しかし、ここでは、エンジンは二回にTBL内のすべての行を反復処理する必要がありますクエリー(したがって結果)が同じであるにもかかわらず、2つのクエリーをAとBの結果に一致させます。
WHERE on AとBが常に2つで同一であると仮定すると、これは無駄です。一度何かを照会する方法はありますか?私はRAMでこの全体を実行する代わりにディスク書き込みを必要とする一時テーブルを避けたいと思います。
私はMySQLを使用していますが、SQLの回答が多大に役立ちます。
例:
次のようにTBLが見えることとします
私は実行COL1 COL2
1 A
1 B
1 C
2 D
2 E
私COL1 = 1の句は、それが上記の表から最初の3行を返します。
A.COL1 A.COL2 B.COL1 B.COL2
1 A 1 A
1 A 1 B
1 A 1 C
1 B 1 A
1 B 1 B
1 B 1 C
1 C 1 A
1 C 1 B
1 C 1 C
クエリから結果セットを構成する方法の例を挙げることはできますか? – northpole
私の例を参照してください – carlbenson
一時テーブルの代わりにテーブル変数を使用することができます:http://www.sql-server-performance.com/2007/temp-tables-vs-variables/ – diaho