• ベストアンサー

関係演算子が無効です。

オラクルで作成しているのですが、関係演算子が無効です。と出ます。 どこを修正すればよいでしょうか SELECT * FROM 表, ( SELECT col FROM 表 WHERE col1,col2 > ) WHERE col = MIN(col);

  • Oracle
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

No.1の補足にある >col1もcol2も同じく小さければという条件 の意味が理解できませんでした。 どのようなデータから、どのような結果を取得したいのかを 具体的に書いてもらえればアドバイスできるかもしれません。

kp-umum
質問者

お礼

具体的にできるようもう少しねってきます! ありがとうございました!

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

副問い合わせ中の  WHERE col1,col2 > がおかしいです。  WHERE col1 > col2 のつもりで書いたのでしょうか?

kp-umum
質問者

補足

すみません。 col1もcol2も同じく小さければという条件でしたので,で区切らせていました。

関連するQ&A

  • Oracleでビット演算はできますか?

    Oracleではビットごとの論理演算はできるでしょうか? たとえば、 select * from xxx where (flags & 32)=0 というようなことをやりたいのですが、可能でしょうか?

  • 2つの表の整合をとる方法

    こんにちは、 オラクルで2つの同じ表を同じデータに保つ方法について悩んでいます。 A表、B表共 COL1 プライマリキー COL2 COL3 として。 両テーブルのデータをあわせこみたいのですが、 過去ログを調べたところ、他方に無いデータの獲得についてはありましたのでそれを参考にINSERT文を作成しました。 INSERT INTO B ( SELECT * FROM A WHERE NOT EXISTS ( SELECT * FROM B WHERE A.COL1 = B.COL1 )) 上記SQLでAにあってBにないレコードがBに追加される事を確認しましたが、 COL1が同じでCOL2またはCOL3が違う場合の UPDATE文をどの様に記述すればよいか分かりません。 どなたかご教授願えないでしょうか?。

  • レコードが選択されないときの、置換ができません

    select max(COL_1) from TBL where COL2 = 'hoge'; というようなSQLがあり、この条件での選択されるレコードが存在しないとき max(COL_1)の値を"0"(ゼロ)にしたいのですが。。。 select nvl(max(COL_1),NULL,0) from TBL where COL2 = 'hoge'; と修正しても結果は変わらず「レコードが選択されませんでした。」 となってしまいます。 他にdecodeや、countも試したのですが、力量不足のため、上手くいきません。。 どなたかご教授願います。 Oracle 9i で SQL*Plus 使用しています。

  • <SQL>条件付きで最小値レコードを抽出する方法

    SQLite3.7.5を使っています。 以下<抽出前>の様なテーブルから、col2の値が"FALSE"で(col1=3,4,5の3つ)かつ、col3が最小値(col3=3)であるレコードを<抽出後>のように抽出するSQL文をご教示ください。 <抽出前> col1 | col2 | col3 1 | true | 3 2 | true | 0 3 |false | 3 4 |false | 5 5 |false | 3 <抽出後> col1 | col2 | col3 3 |false | 3 5 |false | 3 自分で考えたSQL文は以下です。 抽出結果は問題ないのですが、同じSELECT文を2回書いていてだいぶ効率悪いことをしているのではないかと思い質問しました。 よろしくお願い致します。 SELECT * FROM (SELECT * FROM test WHERE (col2 = false)) WHERE col3 = (SELECT min(col3) FROM (SELECT * FROM test WHERE (col2 = false)))

  • oracleでwith句の結果を使ってupdate

    oracleでwith句の結果を使って外部結合?でupdateしたいのですが 上手くいきません。 oracleでは無理なのでしょうか。 よろしくお願いいたします、。 /*---------- with v1 as ( select row_number() over(PARTITION BY ・・・ ORDER BY ・・・) as rnum ,no ,col1 ,・・・ from ・・・ ) update ( select A.col1 A_COL, v1.col2 B_COL from table1 A inner join table2 B on A.cd1=B.cd1 inner join v1 on A.no=v1.no where v1.rnum=1 and ・・・ ) set A_COL=B_COL ; ----------*/ と書いたのですが、 実際に実行してみると、 カッコ「(」、「)」がないとか、 selectが必要とか, A_COLやB_COLが無効ですとか、 となります。 どこが悪いのでしょうか。 oracleではupdateでwithは使えないのでしょうか。 よろしくお願いします。

  • 連結演算子で結合すると値がNullだと表示出来ない

    SQLで連結演算子(||)を使って、col1とcol2を連結させたいのですが、 どちらかの列の値がNullだと結果がNullでかえってきてしまいます。 Select col1 || '/' || col2 As set_col From table_name; col1には必ず値が入っているのですが、col2には値が入るとは限りません。 表示させる解決策はあるのでしょうか?

  • LIKEを使用したレコード抽出について

    OracleでLIKEを使用したレコード抽出で困っています。 あるテーブル(TAB_A)が以下のような属性だとします。 ------------- COL1 CHAR(5) COL2 CHAR(5) このとき、このテーブルに次のようにデータが格納されています。 COL1  COL2 -------------- ABC==  12345 [=]は便宜上1バイトスペースを表す このテーブルを対象として (1) SELECT * FROM TAB_A WHERE COL1 LIKE 'ABC%'; (2) SELECT * FROM TAB_A WHERE COL1 LIKE 'ABC==';   ([=]は便宜上1バイトスペースを表す) (3) SELECT * FROM TAB_A WHERE COL1 LIKE 'ABC'; というSQLを発行した場合に、いずれもレコードが抽出されてしまいます。(1)(2)の場合は当然だとは思うのですが、(3)でもレコードが抽出されることが理解できません。このようなことが起こり得るのでしょうか。

  • SQL文について困っています

    ID(NUMBER型)と NUM(NUMBER型)と nenngetu (date型)を持ったテーブルAAAから、 ID=1000 のなかで日時が一番古い処理NOをselectするSQL文を書きましたが上手く実行されません。 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。

  • sqlplusの処理が途中でとまる

    oracle10gを使用しています。 sqlplusでいくつかのDDLとDMLを一度にコピーペーストで流しました。一つ一つの処理後にcommit;も入っています。 しかし、最後のDMLで処理がとまってしまい、エラーもでません。内容は以下のようになっています。 insert into tbl_a (select distinct col1,'2006/01/01' from tbl_b where col1 is not null union select distinct col2,'2006/01/01' from tbl_b where col2 is not null union select distinct col3,'2006/01/01' from tbl_b where col3 is not null union select distinct col4,'2006/01/01' from tbl_b where col4 is not null union select distinct col5,'2006/01/01' from tbl_b where col5 is not null union select distinct col6,'2006/01/01' from tbl_b where col6 is not null); COMMIT; この処理を単独で実行すると、成功します。sqlpulsは、実行コマンドの量に制限などあるのでしょうか?なぜ、このようになるかわかりません。ちなみに、コマンドの全文字数は3990目で、処理が停止するのは、3648文字目です。この3648文字目にあたるのが、上記の >select distinct col3,'2006/01/01' の >select disti です。 大変急を要ししています。 よろしくお願いします。

  • PLPGSQLでの複数行複数列

    はじめまして。 2つ質問があります。 (1) SELECT col1, col2 FROM tblA (データは複数行) の結果表をFUCNTIONとして作成したいのです。 (2) また、そのFUNCTION( func1とします )から得られる結果を利用して 以下のような使い方がしたいのですが、可能でしょうか? SELECT * FROM tblB b LEFT JOIN ( SELECT * FROM func1() ) a USING( col1 ) (1)で行き詰まっているので(2)を試すことも出来ません。。。 せめて(1)だけでも出来たら助かります。 よろしくお願いします