MySQL 8.0で2つの類似したテーブルから重複なしで情報を得たい
2つの異なる方法で集計したテーブルA, Bがあります。集計方法が異なるので100%一致はしませんが、概ね同じ種類のデータ(対象、期間)が記録されています。つまりテーブルAとBにまったく同じデータが記録されていることもあります。
テーブルA, Bには複数のcolumnがありますが、重要なのは name と timestamp です。もう一つ division 列もありますが、テーブルAでは欠損値であることがあります。
nameとdivisionはVARCHARです。
timestampはDATETIMEです。
テーブルA, Bは類似したデータを異なる方法で記録していますので、大半は重複したデータです。ここでは name が一致していたら重複としてください。timestampは数秒の誤差があります。
テーブルA
name, timestamp, division taro, 2019-08-28 09:54:17, company_x jiro, 2019-09-28 09:54:17, company_y saburo, 2019-10-28 09:54:17, company_y
テーブルB
name, timestamp, division jiro, 2019-09-28 09:54:19, company_y saburo, 2019-10-28 09:54:14, company_y ichiro, 2019-10-29 09:54:14, company_z
があったときに
taro, 2019-08-28 09:54:17, company_x jiro, 2019-09-28 09:54:17, company_y saburo, 2019-10-28 09:54:17, company_y ichiro, 2019-10-29 09:54:14, company_z
を得るのが目的です。timestampはどちらの値を使用しても構いませんが、taroはテーブルAにしかなく、ichiroはテーブルBにしかいないので両方出力しても構いません。
発生している問題・エラーメッセージ
Column 'name' in field list is ambiguous.
など。
あるいは1000件以上出るはずが100件しか出なかったり、すべての組み合わせが生成され36万件くらい出力される。
試したこと
SQLの例を探して類似の事例からSQLを作ろうとした。例えば
https://qiita.com/KentFujii/items/f25bcb5f5ca7d7db1c9c
などを読んだが、多くの事例では異なる種類のテーブルの結合だったり「重複した値」のみ抽出の例が多く、SQLの基礎知識のない自分では自分に合わせてカスタマイズできなかった。
補足情報(FW/ツールのバージョンなど)
MySQLを使用しています。バージョンは8.0です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/31 00:19