質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

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

SQL

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

Q&A

解決済

2回答

144閲覧

2つのテーブルの結合

limitman80

総合スコア40

MySQL

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

SQL

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

0グッド

0クリップ

投稿2018/11/07 08:04

SQLがわからず困っています。

テーブルAには
No,Name
1,A
2,B
3,C
4,D
5,E
というデータがあり、テーブルBには
No,Name
2,B
4,D
というデータがある状態で
テーブルCにテーブルAからテーブルBにいない人を持ってくるSQLを考えてるのですがわかりません。

結果としてテーブルCには
1,A
3,C
5,E
という結果が入ればです。

一度テーブルAからテーブルCに全データをコピーし、その後にテーブルCにテーブルBに存在している人をDELETE文で削除するSQLを発行する方法はできたのですが、
一括でテーブルCにInsertするSQL文はありますでしょうか?

宜しくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

13.2.5.1 INSERT ... SELECT 構文
13.2.10.6 EXISTS または NOT EXISTS を使用したサブクエリー

SQL

1insert into テーブルC(NO,Name) 2select NO, NAME 3from テーブルA as t1 4where not exists(select 1 from テーブルB where NO=t1.No)

投稿2018/11/07 08:08

編集2018/11/07 08:23
sazi

総合スコア25184

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

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

0

saziさんの回答で問題ないですが、別の考え方

  • 元データ

SQL

1create table tbl_a(No int primary key,Name varchar(10),index(Name)); 2insert into tbl_a values(1,'A'),(2,'B'),(3,'C'),(4,'D'),(5,'E'); 3create table tbl_b(No int primary key,Name varchar(10),index(Name)); 4insert into tbl_b values(2,'B'),(4,'D');

left join してnullを拾う

SQL

1select t1.No,t1.Name from tbl_a as t1 2left join tbl_b as t2 on t1.No=t2.No 3where t2.No is null

any

SQL

1select No,Name from tbl_a as t1 2where not No=any (select No from tbl_b)

in

SQL

1select No,Name from tbl_a as t1 2where not No in (select No from tbl_b)

all

SQL

1select No,Name from tbl_a as t1 2where No <> ALL (select No from tbl_b)

投稿2018/11/07 09:41

編集2018/11/07 09:49
yambejp

総合スコア114814

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

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

sazi

2018/11/07 10:10

使い分けとか意識されてます?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問