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

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

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

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

Q&A

解決済

3回答

139閲覧

mySQLにてテーブル比較をし、全く一緒だったなら表示させない

aaa00000

総合スコア9

MySQL

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

0グッド

0クリップ

投稿2018/09/25 06:51

編集2018/09/25 06:58

前提・実現したいこと

mySQLにてAテーブルとBテーブルを比較した際、テーブルの中身が一緒ならば表示させない
というものを作りたいです。

試したこと

aとbのテーブルのカラムは全く一緒です。

select
*
from
Aテーブル as a
left join
Bテーブル as b
on
IFNULL(a.カラム1,'') = IFNULL(b.カラム1,'')
and
IFNULL(a.カラム2,'') = IFNULL(b.カラム2,'')
and
IFNULL(a.カラム3,'') = IFNULL(b.カラム3,'')
where
b.カラム1 = null;

初心者で申し訳ないのですが解決策のヒントでも教えていただけたらと思います。
ご助力のほどよろしくお願い申し上げます。

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

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

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

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

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

guest

回答3

0

ベストアンサー

こういうことですか?

  • 元データ

SQL

1create table tbl_a(id int primary key,c1 int null,c2 int null,c3 int null); 2insert ignore into tbl_a values(101,1,2,3),(102,1,4,5),(103,3,null,null),(104,null,null,null),(105,5,6,7),(106,null,1,2); 3create table tbl_b(id int primary key,c1 int null,c2 int null,c3 int null); 4insert ignore into tbl_b values(201,1,2,3),(202,1,4,5),(203,3,null,null),(204,null,null,null),(205,5,6,8),(206,1,null,2);
  • 検索

1-4は完全一致、5,6は一致してない。
表示するのはtbl_aだけ?tbl_bのデータもほしい?

SQL

1select * from tbl_a as a 2where not exists( 3 select 1 from tbl_b where 4 (a.c1=c1 or a.c1 is null and c1 is null) and 5 (a.c2=c2 or a.c2 is null and c2 is null) and 6 (a.c3=c3 or a.c3 is null and c3 is null) 7 );

投稿2018/09/25 08:09

yambejp

総合スコア114581

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

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

aaa00000

2018/09/26 08:56

素晴らしいご回答ありがとうございます。 yambejp様の方法で解決できました。 joinを使わなくてもこのような方法があるのですね。勉強になりました。 この度は本当にありがとうございました。
guest

0

UNIONを使えば、同じ行を省いて結合できます

SELECT * FROM Aテーブル
UNION
SELECT * FROM Bテーブル

投稿2018/09/25 07:26

shiki_968

総合スコア24

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

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

0

等しくないは

<> または !=

で表現します。

カラム1 が NULL でないは

カラム1 IS NOT NULL

と表現します。


違和感があるかとは思いますが、これは文法(掟)ですから覚えてください。些細なことでもマニュアルを確認する習慣も身に着けてください。

投稿2018/09/25 07:25

Orlofsky

総合スコア16415

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

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

aaa00000

2018/09/25 08:04

ご回答ありがとうございます。 !=でカラムを比較してみたのですが、違うデータが入ってるのにも関わらずEmpty setと言われてしまいます。 何故かわかるでしょうか? よろしくお願い申し上げます。
Orlofsky

2018/09/25 08:27

差支えない限り、現象を再現できる最小限のデータをCREATE TABLEと共に「質問」に追記されては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問