2017-06-09 10 views
-1

私はそれはあなたが以下のように3つのパラメータa = b = cはsqlの意味ですか?

select * from table1 a 
join table2 b on ... 
join table3 c on ... 
where a.id = b.id = c.id 

間の比較にVertica SQLでクエリを構成することが可能だと見は

select * from table1 a 
join table2 b on ... 
join table3 c on ... 
where a.id = b.id and b.id = c.id 

それとも別の意味を持っていないと、それは等しいですか?

+1

SQLのほとんどの方言で、これはエラーが生成されます:)たく行動ではないと思います。 SQLのいくつかの方言(例えば、MySQL)では、 '(a.id = b.id)= c.id'を意味する。最初の式は1(2つのIDが等しい場合)または0またはNULLと評価されます。そのようなデータベースでは、全体的な表現はむしろ意味がありません。 Verticaがこの問題に関して何をしているのか分かりませんが、私はVertica式構文解析のいくつかの側面がMySQLに似ていることに注意します。 –

+0

興味深い。 3つのテーブルがどのように結合されているかを教えてください。私はJOIN TABLE2 bの上にを意味するのですか? – mauro

+0

where句で暗黙的な結合を再現しようとしましたが、それは私のためには機能しません。あなたの "ID"列はブール値ですか?完全な再生装置の共有はどうですか? – mauro

答えて

0

b.id = c.idが最初に評価され、trueまたはfalseに等しくなります。 これは、a.idと比較されます。ブール値または0または1に等しい数値です。a.idが0または1以外の数値である場合、エラーが発生します。言われて

は、私はそれはあなたが

関連する問題