オラクルがこの文を認識しないのはなぜですか? 「キーワードから」が期待される場所に見つからなかったと表示されます。どうしたの ?
例:
select distinct a.id = b.id
from table1 a, table2 b
where a.column = X and b.column =Y;
MySQL はそれを可能にします。では、何を変更すればよいのでしょうか?
あなたの問題は、select句にある場合、a.id = b.idが有効なSQLではないことです。
以下を編集
ブール値の結果を期待することについてのコメントを考えると、ケース構造を探している可能性があります。
select case when a.id = b.id then 1 else 0 end BooleanResult
from tablea a join tableb b on something
where etc
まず、OracleにはSQLにブールデータ型がないため(PL / SQLにはブールデータ型があります)、クエリはブールを返すことができません。
あなたは次のようなことをすることができます
select distinct (case when a.id = b.id
then 1
else 0
end)
from table1 a,
table2 b
where a.column = X
and b.column = Y;
table1
非常にありそうもないことですが、実際にデカルト積を実行してから演算子table2
を適用したいということは、私には非常にありそうにありません。多くの場合、本当にやりたいことが別の結合条件を追加することである場合DISTINCT
、人々はクエリに誤ってを追加します。DISTINCT
私はあなたが本当に欲しいと思います
select distinct (case when a.id = b.id
then 1
else 0
end)
from table1 a,
table2 b
where a.some_key = b.some_key
and a.column = X
and b.column = Y;
結合を正しく定義すると、余分な費用は不要になりますDISTINCT
。
オラクルでデコードを使用することもできます
select distinct (decode (a.id,b.id,1,0)) from table1 a, table2 b
where a.some_key = b.some_key
and a.column = X ;
はい、これ
select distinct a.id, b.id
from table1 a, table2 b
where a.column = X and b.column =Y;