1

オラクルがこの文を認識しないのはなぜですか? 「キーワードから」が期待される場所に見つからなかったと表示されます。どうしたの ?

例:

select distinct a.id = b.id
from table1 a, table2 b
where a.column = X and b.column =Y;

MySQL はそれを可能にします。では、何を変更すればよいのでしょうか?

4

4 に答える 4

6

あなたの問題は、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
于 2013-02-28T22:52:27.880 に答える
3

まず、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

于 2013-02-28T23:05:00.317 に答える
0

オラクルでデコードを使用することもできます

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 ;
于 2013-03-01T08:34:44.927 に答える
0

はい、これ

select distinct a.id, b.id
from table1 a, table2 b
where a.column = X and b.column =Y;
于 2013-02-28T22:53:44.650 に答える