質問するログイン新規登録

Q&A

解決済

4回答

755閲覧

[MySQL] 単一テーブルをIN句で検索するときに、IN句(1,2,3,4)の中に、テーブルにない「4」をとりだすためのSQLの組み方について

milton_rb4life

総合スコア30

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2022/03/17 15:18

編集2022/03/17 15:24

0

0

MySQLにて、下記の課題に直面してSQLの組み方のイメージが湧かないため、
質問させていただきます。
ぜひともよろしくおねがいいたします。

実現したいこと

例として、どのテーブルにもリレーションを組まない、単一のテーブル hogeを用意します。

〇 TABLE名:hogeとします。

idname
1Aさん
2Bさん
3Cさん

IN句で、たとえば IN(1,2,3,4) と指定して、上表より4が該当しないことを検出したいのが目標です。

ループを使ってテーブル1行ずつ検索するのは、さすがに効率が悪いので、少ないクエリの回数で4を取得
できないかを考えてました。

EXISTSとサブクエリを組み合わせても、1,2,3に引っかかってばかりな状態です。

最終手段としては、IN句の中身の集合 1,2,3,4と、上記テーブルのid集合との差を
プログラムで検出する方法にしようと考えてます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

takanaweb5

2022/03/18 05:48

MySQLのバージョンは何でしょうか?
milton_rb4life

2022/03/18 10:20

失礼いたしました。 MySQL 5.7です。
guest

回答4

0

SQL

1SELECT * FROM( 2SELECT 1 AS number 3UNION ALL SELECT 2 4UNION ALL SELECT 3 5UNION ALL SELECT 4) AS Q 6LEFT JOIN hoge ON Q.number = hoge.id 7WHERE hoge.id IS NULL;

投稿2022/03/17 23:29

退会済みユーザー

退会済みユーザー

総合スコア0

0

ベストアンサー

一般的なSQLの仕様上存在しないデータを検索することはできません
普通の運用であればそれを求める必要もないはずです
どうしても必要であればプロシージャを用意しておくなどでも処理は簡素化できると思います

投稿2022/03/18 01:22

yambejp

総合スコア118471

milton_rb4life

2022/03/18 10:26

皆様本当にご回答ありがとうございました。 UNION使うなどの方法は思いつきませんでした。 SQLの仕様上で、今回のような問題にはむかないということで、 プログラム上で比較させるシンプルな組み方のほうが早く収まりますね。
guest

0

最終手段としては、IN句の中身の集合 1,2,3,4と、上記テーブルのid集合との差をプログラムで検出する方法にしようと考えてます。

「検索対象として指定する個数も、その中で存在するものも圧倒的に多い」というのでなければ、その手段が第一選択かと思います。

投稿2022/03/17 22:51

maisumakun

総合スコア147063

0

副問合せ を使っては?

投稿2022/03/17 15:53

Orlofsky

総合スコア16419

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問