2011-12-22 14 views
2

私は、次のような構造を持ついくつかのSQLコードを探しています:謎の変数

set @var = 
(
    select count(1) from 
    (
     select * from table where field = 1 
    ) 
    someVariable 
) 

「someVariable」は声明でない限り、実行するように思えません。私の質問は、この "someVariable"は何を表していますか、それがなぜクエリ内にあるのですか?なぜ私は@varをselect count文に完全に設定できないのか分からないので、 "someVariable"は本当に私を捨ててしまっています。

+0

RE:あなたはちょうど私が見フィールド= 1 ' –

答えて

6

派生テーブルは、別名を持っている必要があります。この場合、someVariableはエイリアスとして機能しています。私は、MySQLに類似したクエリを実行すると

+0

ああテーブルから@var = COUNT(*)を選択 'を使用することができます「私は...分かりません」。私が今行った研究に基づいて、それを "AS"に設定してから派生テーブル名を設定できるように見えます。しかし、それは "AS"もなくても働いています。 「AS」は何かを示していますか? – sooprise

+0

2008年はそれを持っていてもいなくてもかまいません。読みやすさの問題です。 – xQbert

+0

「AS」を持っているか持っていなくても、それは違うことを意味するわけではありません。 [OK]を、ありがとう:) – sooprise

0

、私が得た:

ERROR 1248 (42000): Every derived table must have its own alias 

内側の選択は、実際に派生テーブルを生じさせ、そしてsomeVariableが、それは別名ですです。

+0

質問は[タグ:SQL Serverの2008年ではない] MySQL –

+0

はい、しかし、この場合は本当に問題ではありません。受け入れられた回答と私が投稿したエラーメッセージを見てください –