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

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

解決済

1回答

488閲覧

重複データを削除する際、違うテーブルのデータも削除したいが。。

kazoogon

総合スコア281

MySQL

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

SQL

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

0グッド

0クリップ

投稿2017/11/29 11:12

https://teratail.com/questions/101931
こちらの続きとなりますが

DELETE from products_class WHERE create_date not in ( select tmp1.create_date from (SELECT MAX(create_date) as create_date FROM products_class WHERE shop_id=24 GROUP BY product_code, category1,category2,shop_id HAVING count(*) >= 2 ) as tmp1 );

とし古い日付の重複データを削除は可能であります。

またproduct_classテーブルにはproduct_idカラムもある。
→productというテーブルにもproduct_idがある
→DELETE文で消されるproduct_idと同じproduct_id(productテーブルの)も削除したい

となるとINNER JOINを使うと思いますが、どうもうまくいきません。
こちらの正しい書き方・または全く違う方法などあればご回答お願いいたします。

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

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

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

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

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

yambejp

2017/11/30 00:26

create tableおよびinsert形式でサンプルを例示し、元データがどういうロジックで新データになるか提示したほうがいいでしょう
guest

回答1

0

ベストアンサー

質問に質問で返すようで恐縮ですが、
全てを行う一撃のSQLでなければいけませんか?
一旦その場合の手法を2つ紹介しますので検討してみてください。


一時的な状態を持ちたければスクリプト(Node.js、Ruby、Python、PHPなどなど…)を利用した方が超絶楽です。
これらを使えば消したレコードのIDを変数として保存出来ますので、
改めて依存テーブルのレコードを削除するSQL文を生成すれば簡単に解決するでしょう。

もし2発以上のSQLを使えるのであれば、
完成形のSQLを加工すれば、削除予定のレコード(のID)が抜き出せますよね?
つまり、DELETE文のまま発行しなければ依存しているレコードを先を見つけて削除することは可能なはずです。
その後に改めて質問文のSQL文を発行すれば良いでしょう。

投稿2017/12/01 11:39

miyabi-sun

総合スコア21158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問