2012-01-18 13 views
0

構築したいクエリで軽微な問題が発生しました。 アイデアは、ある種の「高価な」計算が行われる同じ古いテーブルの結合に基づいて新しいテーブルを構築することです。下にある選択結合ステートメントでcreate tableステートメントの列エイリアスを使用する方法は?

問題が

私はどこ基礎となる選択の(または上)句で、フィールドリストの計算結果(別名)を使用することはできません。

もう一度計算してみませんか?

  • 1.5 Mioエントリテーブルであるため、結果を再度計算しないようにしたいと思います。 on節にはいくつか条件がありますが、実際には操作の数に違いはありません。したがって、私はむしろ1回の参加につき2回それをしません。
  • 今私はちょうどたい、それが可能であれば:)

SQLステートメント

CREATE TABLE `newTable` AS (
    SELECT (*COMPUTATION*) AS `calculated` 
    FROM oldTable AS t1 
    JOIN oldTable as t2 ON (
     t1.user != t2.user 
     AND *other conditions* 
    ) 
    WHERE `calculated` < *some number* 
); 

私はすでに機能または何か他のものを使用するのではと思ってきましたが、私はそれがでなんとかすべきだと思います1つの簡単なクエリ。

答えて

1

あなたの内側のクエリをもう一度ラッピングしようとしましたか?

CREATE TABLE `newTable` AS 
( select PreQuery.Calculated 
     from (SELECT (*COMPUTATION*) AS `calculated` 
       FROM oldTable AS t1 
       JOIN oldTable as t2 ON 
        (t1.user != t2.user 
        AND *other conditions* 
        )) PreQuery 
     where PreQuery.Calculated < *some number* 
); 
+0

真実です。あなたの命題を試し、それにいくつかの考えを入れた後、それはちょっと明白でした。ありがとう! – PvB

関連する問題