QA@IT

Sql(Oracle) について

52946 PV

お世話になっております。3度目の質問です。

現在タイトルにもあるようにOracleのSQLで悩んでいます。
主キーがAとBあり

データ
A  B
10-0,1
20-1

と入っていた場合の話で
10-0の後は10-1と下記SQL文で出そうと思っています。

SELECT MIN(A) A, MIN(B) B
FROM テーブル名
WHERE A = 10
OR A > 10(もし上の条件でAND文が当てはまらなかった場合(20-1に飛べるように)の条件です)
AND B > 0

これですると10-1ではなく10-0が出てきます。
OR文を消すと正常値が出るようですが、それは()文により消したくありません。
どうかご教授の程、宜しくお願いします

回答

20-0があったときにそれも出て良いならば、

where (A = 10 AND B > 0 ) OR A > 10

とすればいいです。

ANDはORよりも優先して評価されますので今は

where A = 10 OR ( A > 10  AND B > 0)

と言う条件になり、

Aが10ならtrue 確定なので、10-0も表示されます。

細かいですが、ORは論理演算子なので、OR文という言い方はしません。計算方法が異なるだけで、+とかと同じ部類です。(今回は OR A > 10を消したという事でしょうかね。)

編集 履歴 (0)
  • 返答が大変遅れ、申し訳御座いません。
    ご教授頂けました方法で試して見たところ思う数字が取れました。
    及び、言い方のご指摘もありがとうございました。
    今後、質問をする際、気を付けさせて頂きます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。