• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数値から一致するものがあるかどうかを調べる方法)

複数値から一致するものがあるかどうかを調べる方法

このQ&Aのポイント
  • SELECT文で複数の値の中から一致するものを検索する方法について説明します。例えば、A、B、Cという値の中からCが存在するかどうかを調べる場合、IN演算子を使用します。
  • また、A、B、Cの中にいずれかを含んでいるかどうかを調べる場合も同様にIN演算子を使用します。SELECT文の条件として、項目名がA、B、Cのいずれかに一致するかを判定することで、結果を取得することができます。
  • データベースの結果をプログラム側で処理する際に、取得結果の件数が0件かどうかを判断することで、Cが存在するかどうかを判定することができます。また、結果の件数が1件以上であれば、取得結果の中からCを含むかどうかをループ処理することで、Cが存在する場合の結果をプログラム側で保持することができます。

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

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.1

存在するかどうかでいいんですね? SELECT COALESCE(SUM(CASE WHEN 項目名 = C THEN 1 ELSE 0 END), 0) AS ANSWER_1, COUNT(*) AS ANSWER_2 FROM TEST WHERE 項目名 IN (A, B, C) いずれも1以上ならば存在する、0ならば存在しない。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 2つの情報を1つのSQLで取得する方法について

    お世話になります。 SQL文で、下記内容のデータを取得する方法がわかりません。 ・TESTテーブルからA、B、Cの3項目のデータを取得する。 ・但し、この中のC項目については、WHERE句の条件を満たす データの最大値を取得する。 ・項目AおよびBの取得条件は、項目Cと同一条件とする。 ・目的は、項目AおよびBに関しては、WHERE句の条件を満たす  全てのレコードを取得し、項目Cにおいては最大値のみ取得したい。 上記内容を取得しようと考えた場合、 現時点で下記のSQL文を作成して実行しましたが、 うまくデータが取得できません。 SELECT A, B, C FROM TEST WHERE C = (SELECT MAX(C) FROM TEST) AND Z = 'xxxxx' AND Y = 'x' AND X = 'Y' ※項目X, Y, ZはTESTテーブルのカラムです ※上記SQLを、A、Bのみ取得用とCのみ取得用に   それぞれ分解して実行すると、それぞれの結果は   正常に取得できます。 2つの結果を1つのSQLで取得することは可能でしょうか? どなたかご教授願えますか?よろしくお願いいたします。

  • 複数テーブルでの件数検索について

    Oracle上の2つのテーブルからの条件でマッチする件数をSQLで作成しています。 内容としては、テーブルAの区分=1 かつ テーブルBの種別がスペースの件数です。 テーブルAの該当するデータは10件中3件、テーブルBの該当するデータは50件中15件で、本来両方がマッチするのは2件です。 SELECT COUNT(*) FROM テーブルA,テーブルB WHERE テーブルA.区分 = '1' AND テーブルB.種別 = ' ' ; 上記のSQL文で件数をカウントしたのですが、どうも結果では30件とカウントされてしまいます。 なんとか2件として結果を出したく、参考資料を調べているところなのですが、今のところ参考になる文献が見つからず悩んでます。もし簡単にカウントできるSQLがあったり、分かる方がいれば手助けして頂きたいと思い、今回投稿しますのでご教授賜りたく思います。よろしくお願いします。

  • ある条件でのSQLの取得方法について

    以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー   項目1 10     X 20     Y ・テーブルB キー  項目2  項目3 10     5    C 10     6    D 12     6    E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は  別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、  複数件あるかも知れません。  無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと  同じレコードに、項目2が同じデータの情報を出力します。  項目2が同じデータが無い場合はこの情報は出力しません。  項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー  フラグ   項目1  項目2  項目3   項目2が同じキー  項目2が同じ値 10  テーブルA   X 10  テーブルB         5    C 10  テーブルB         6    D        12            E 20  テーブルA   Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?

  • オラクルのSQLで複数テーブルの一括件数取得

    テーブルAとテーブルBがあって、それぞれに 項目Aがあり、 その項目Aが 0の件数を取得したのいですが、高速化のため 1度のSQLで 取得したいのです。 どのようにすればいいでしょうか? 例 テーブルAの項目A 0 1 2 0 テーブルBの項目A 1 0 0 2 0 この場合、テーブルAが 2件で テーブルBが 3件となります。 それぞれ別々に取得するやり方は わかります。 それぞれ別々に取得する(2回する)のを1回で取得するようにすれば 少しは 速くなるのでは ないのかと思いすが、 いかに取得したら 速くなるのか 教えてください。

  • テーブル名をカラムとして取得する方法

    テーブル名をカラムとして取得する方法はありますでしょうか? オラクル8とVB6でプログラムを組んでいます。 例 TABLE Aの内容 カラム1 1 2 3 TABLE B カラム1の内容 4 5 6 SQLは簡略化してかきます。下記のSQLを実行した場合、 select A.カラム1 from A union select b.カラム1 from b 1 2 3 4 5 6 を取得できます。 例えば、上記で、SQL実行後、 下記のような値を取得したいです。 1 ,Aのテーブルだよ 2 ,Aのテーブルだよ 3 ,Aのテーブルだよ 4 ,Bのテーブルだよ 5 ,Bのテーブルだよ 6 ,Bのテーブルだよ それぞれのテーブルの名前を別名で結果に格納したいのです。 何か方法はありますでしょうか? なければ、unionせずに、2回SQLを発行し、それぞれに、 プログラム上で、「Aのテーブルだよ」を後で挿入したいと思っています。

  • COBOLの動的SQLについて

    COBOLにおいて、動的にSQLを組みたいのですが、 取得する方法も含めてご教授願いませんでしょうか? 例) 条件により コード=1の場合、 SELECT A.ID,B.NAME FROM ID A,NAME B コード=2の場合、 SELECT A.ID,B.NAME,C.ADDRESS FROM ID A,NAME B,ADDRESS C のように条件により取得する項目も数もテーブルも違います。 この場合でのSQLの組み方とデータを取得する(FETCHの方法)がわかりません。 また、取得する件数も1件ではありません。 よろしくお願い致します。

  • SELECT DISTINCTの結果件数をCOUNTする方法

    SQL SERVER 2005 EXPRESS のストアドプロシージャで、 SELECT結果の件数を、変数 @count に取得したいのですが DISTINCTの引数が複数あるのが原因なのか、上手くいきません。 目的はテーブル「TBL」から、COMとUSERの組み合わせの リストを抽出し、その件数を取得する事です。 テーブル名:TBL COM  USER --------------- 001  A 002  A 003  A 001  B 002  A 003  C 「COMとUSERの組み合わせで、重複するものは取らない」のならば  SELECT DISTINCT COM,USER  FROM TBL で、下記のような結果が得られます。 COM  USER --------------- 001  A 002  A 003  A 001  B 003  C で、この結果件数である「5」を取りたいのですが DECLARE @count int  SELECT @count = COUNT(DISTINCT COM,USER)  FROM TBL print @count と打っても失敗します。 ( )の括りやCOUNTの位置をいろいろと試したが出来ませんでした。 COUNT DISTINCT(複数項目)が出来ないのならば、 どうすればこの結果の件数を取得できるでしょうか? どうかご教授授くださいませ。よろしくお願いします。

  • 2つのテーブルからレコードを抽出する方法

    お世話になります。MySQLに関する質問です。 TABLE1とTABLE2の2つのテーブルからレコードを抽出する際、 TABLE1からは全項目のデータを取得し、TABLE2からは一部の項目の データを取得したいと考えています。 条件は、TABLE1とTABLE2を[No]という項目の値で紐(ひも)づけます。 (1) SELECT * FROM TABLE1 (2) SELECT COL_A, COL_B, COL_C FROM TABLE2 上記(1)(2)のレコードを1つのSQLで取得する方法について、どなたかご教授願えますか?

    • ベストアンサー
    • MySQL
  • SQLについて教えてください。

    SQLについて質問があります。 あるテーブルの項目が、倉庫名、商品名、在庫数量とあった場合、 違う倉庫にある同一商品が数件あったとします。 例えば、  A倉庫 商品●● 10個  B倉庫 商品●● 20個  C倉庫 商品●● 5個  A倉庫 商品×× 3個  B倉庫 商品×× 15個  C倉庫 商品×× 0個 上記のような場合、●●商品についてはどれも在庫が1個以上 あるので通常に3件取得したいのですが、××商品はC倉庫が在庫0個です。 上記の様に0個の件数が1件でもあったら、その商品については 取得しない様なSQL式を1発で組むことは可能でしょうか? (上記の例の場合、●●商品3件のみ取得したい) 何故、SQL初心者で初歩的な質問で申し訳ありませんが よろしくお願い致します。

  • select insertで複数テーブルから値を取得したい

    環境:oracle9i select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか? たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。 よろしくお願いします。 insertしたいテーブル:A Aテーブルの項目:o,p,q,r,s,t 値を取得するテーブル:B,C Bテーブルの項目:o,p,q,r Cテーブルの項目:o,p,s,t oとpが主キーになっていて、それらが一致するBとCのデータを あわせて、Aにinsertしたいと思っています。 insert into A(o,p,q,r,s,t) select このあと、どのように書けばよいのかがわかりません。