🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

SQL

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

Q&A

解決済

3回答

3435閲覧

【sql】片方のテーブルにないデータを取得したい

tokyo2020

総合スコア28

MySQL

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

SQL

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

0グッド

0クリップ

投稿2019/11/20 05:59

編集2019/11/20 06:05

タイトルの通りです。
table1(id,name)、table2(id,info)
table1には(1,"名前")、table2には(2,"情報")
が入っており、
table1になく、table2にあるもの(今回の場合id=2)のデータを取得したいです。

2つのテーブルを結合し、テーブル1にないidのものを取得しようとしましたが、うまくいきません。

sql

1select * 2from 3 table1 as t1 4 left outer join table2 as t2 5 on t1.id = t2.id 6where 7 t1.id is null

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/20 06:02

タイトル→「削除したい」 本文→「取得したい」 矛盾している。
tokyo2020

2019/11/20 06:05

取得に変更しました
guest

回答3

0

ベストアンサー

table1に対してtable2をleft outer joinをしているからだと思います。
right outer joinに書き換えるか、table2に対してtable1をleft outer joinすることで期待通りの動きになるのではないでしょうか。

投稿2019/11/20 06:08

KaiShoya

総合スコア551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tokyo2020

2019/11/20 06:24

回答ありがとうございます! right joinにしたら無事取得できました。 取得したデータを削除したい場合はdelete ~ where() の中に今のクエリを書いたら削除できますか?
KaiShoya

2019/11/20 06:31

`select *`の部分を`delete t2`に書き換えたら削除できると思います。
tokyo2020

2019/11/20 06:41

なんどもありがとうございます。
guest

0

質問の案件ですと、副問合せ の NOT EXISTS や NOT IN が使われることが多いです。どれを使うかは処理時間を実測して選択します。

投稿2019/11/20 06:40

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

取得したいのでしょうか、削除したいのでしょうか?

SQL

1create table tbl1(id int primary key,name varchar(20)); 2insert into tbl1 values 3(1,'suzuki'), 4(2,'tanaka'), 5(3,'yoshida'); 6 7create table tbl2(id int primary key,info varchar(20)); 8insert into tbl2 values 9(1,'aaa'), 10(3,'bbb'), 11(4,'ccc'), 12(5,'ddd'); 13 14select * from tbl2 as t2 15where not exists(select * from tbl1 where t2.id=id);

投稿2019/11/20 06:10

yambejp

総合スコア116661

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問