2009-06-04 18 views
2

where句でMySQLのサブ選択から返された値をフェッチして使用したい。これは可能ですか?サブクエリを2回書く必要はないようですが、必要な場合は、MySQLを実行するだけで十分ですか?Mysql - 副選択結果をフェッチしてWHERE句で使用できますか?

私は動作しません、次の試してみました:これは、このエラーが発生し

SELECT 
    (SELECT 1 FROM table WHERE somereallycomplicatedclause = 'something') 
     AS subselectresult 
FROM content WHERE subselectresult = 1 

を:あなたはWHERE句で列の別名を使用することはできません

#1054 - Unknown column 'subselectresult' in 'where clause' 

おかげ

答えて

0

あなたのクエリはあなたが表示されているようには奇妙です。あなたはこの方法(外積)同じ結果を得ることができます。

SELECT S.One 
FROM contacts, 
(SELECT DISTINCT 1 as One FROM table WHERE somereallycomplicatedclause = 'something') S 

私はあなたが(サブクエリおよび連絡先テーブル間のリンクは、例えば何である)解決しようと何をすべきかについての詳細を言うべきだと思いますか?

+0

申し訳ありませんが私はあまり単純化し、間違ったテーブル名を使用しました。これはコンテンツのテーブルで、現在のContactが各行の部分にアクセスできるかどうかを返します。したがって、副選択は、私が照会している主テーブルの主キーであるContentIdを使用します。おそらくこれを行うためのより洗練された方法がありますが、私は既存のスキーマに縛られており、クエリははるかに複雑になります。副次的なSQL全体が異なるビットのコードによって生成されます。それ以外の場合は、おそらく結合を使用したでしょう。 –

+0

サブクエリが別のコードで生成されているとはどういう意味ですか?私の最初のアイデアは、何らかの形で結合でそれを変換しようとすることです(これが詳細を尋ねる理由です)。 –

+0

私はMySQLで良くありませんが、内部選択を行い、結果を返すMySQLで関数を定義することは可能ですか?現在の行から関数にパラメータを渡して、選択を実行できます。 しかし、原則として、外側の選択の結果として各行に対して実行される内側の選択があるため、パフォーマンスはあまり変わらないでしょう。 –

関連する問題