
お世話になっております。
最近MYSQLをはじめた初心者です。
一括して削除を行いたいのですが、どうしても上手くいかないのでご教授いただければと思います。
『products』というテーブルがあり、その中身を更新していくために、
毎日更新用のcsvファイルが送られてきます。
そのcsvファイルを一度更新用のテーブル『up_products』にロードし、
その更新用csvの中身と一致したものを、テーブル『products』から一括して削除したいと考えております。
更新用ファイルには以下の項目があります。
pos_code(ポスコード)、hinban(品番)、title(タイトル) etc…
この「pos_code」と「hinban」が一致するものを削除したいのです。
いろいろなサイトで調べ、下記のようなSQL文で試みたのですが、ダメでした。。。
delete from products where pos,hinban = any (select pos,hinmoku from up_products);
また、この上記方法ですが、更新用テーブルを使用すれば上手くいくかな?と、
自分が判断したもので、単にcsvファイルをテーブル『products』に
load data infile~
のようにロードすることで、「pos_code」と「hinban」に一致したものを
一括して削除する方法があるのでしたら、あわせてご教示いただければと思います。
わかりづらい説明で恐れ入りますが、何卒よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
MySQLのバージョンは、何でしょうか?
更新用ファイルには以下の項目があります。
>pos_code(ポスコード)、hinban(品番)、title(タイトル) etc…
>この「pos_code」と「hinban」が一致するものを削除したいのです。
>いろいろなサイトで調べ、下記のようなSQL文で試みたのですが、ダメでした。。。
>delete from products
> where pos,hinban = any (select pos,hinmoku from up_products);
SQLの構文として正しくありません。
where (pos,hinban) = any (select pos,hinmoku from up_products)
という書き方なら、構文として正しいです。ただ、列名はposでなくpos_codeでは?
(1)existsを使う・・・MySQL 4.1以降
delete from tbl1
where exists(select * from up_tbl1
where tbl1.key1=key1 and tbl1.key2=key2);
(2)他表を参照したり、複数表の削除も可能なMySQLの機能を使う
delete tbl1 from tbl1,up_tbl1
where tbl1.key1=up_tbl1.key1 and tbl1.key2=up_tbl1.key2;
※この例では、削除対象はtbl1だけです。この辺はMySQLの独自機能が多いようです。
http://dev.mysql.com/doc/refman/4.1/ja/delete.html
「where tbl1.key1=key1 and tbl1.key2=key2」の条件式は、
「where (tbl1.key1,tbl1.key2)=(key1,key2)」といった書き方もできます。
これは、行値構成子(行値式)という書き方で、SQL-92(?)で規定され、SQL Server以外の主要なRDBMSでは実装されています。
chukenkenkouさま
ご回答ありがとうございます!
現在使用しておりますバージョンは『4.0.14』になります。
>(2)他表を参照したり、複数表の削除も可能なMySQLの機能を使う
>delete tbl1 from tbl1,up_tbl1
>where tbl1.key1=up_tbl1.key1 and tbl1.key2=up_tbl1.key2;
上記ご教授いただいた構文
delete products from products,up_products
where products.pos_code=up_products.pos_code and products.hinban=up_products.hinban;
を使用することにより、望んでいた結果を得ることができました!
本当にありがとうございました!!
心より感謝しております!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Oracle SQL update方法 2 2022/06/22 14:07
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) Excel VBAでフォルダが何層にもなっていて最下層の中にCSVファイルがあり最上層のファイルを指 4 2022/06/08 20:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
トリガって、自分自身のテーブ...
-
ACCESSのマクロでテーブルのデ...
-
HiRDBのPURGEとDROPの違い
-
クエリで・・・
-
Excel テーブル内の空白行の削除
-
アクセスのクエリでレコード削...
-
削除フラグってどうなんでしょう?
-
アクセス2010について
-
条件付DELEATE文について
-
「テーブルに座って……」という...
-
SELECT 文の NULL列は?
-
一つ前に戻るには…
-
SQL、2つのテーブルで条件一致...
-
Accessでデータシートに同じデ...
-
sqlplusで表示が変なので、出力...
-
会社の飲み会の幹事になり、座...
-
SQLにて指定日付より前、かつ最...
-
update文で改行を入れる
-
SQLでUPSERTを一度に複数行やる...
-
SQL 複数テーブルのupdate
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel テーブル内の空白行の削除
-
HiRDBのPURGEとDROPの違い
-
トリガって、自分自身のテーブ...
-
ACCESSのマクロでテーブルのデ...
-
アクセスのクエリでレコード削...
-
Access2003 VBAのDELETEについて
-
条件付DELEATE文について
-
Access2000の削除クエリで消し...
-
大量のレコードを削除する方法
-
mysqlで間接クエリー実行させた...
-
リサイクルビンのテーブル削除方法
-
CSVファイルから一括して削除す...
-
ACCESSのデータ入力時の「メモ...
-
【ACCESS2000】 VBAでリレーシ...
-
内部結合で
-
列のDEFAULT設定を削除するコマ...
-
削除フラグってどうなんでしょう?
-
MySQLのストアドでファイルを削除
-
アクセス2010について
-
ここで言う参考書のエイリアス...
おすすめ情報