2

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

私は動作しない以下を試しました:

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

これにより、次のエラーが発生します。

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

ありがとう

4

2 に答える 2

2

WHERE句で列エイリアスを使用することはできません。HAVINGに入れてみてください。そうすればうまくいくはずです。

ここでの説明:http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

于 2009-06-04T10:30:49.280 に答える
0

表示したクエリは奇妙です。この方法で同じ結果を得ることができます(外積):

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

何を解決しようとしているのか(たとえば、サブクエリと連絡先テーブルの間のリンクは何か)についてもっと言う必要があると思いますか?

于 2009-06-04T10:35:21.643 に答える