人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL のSQL文のDELETE文の書き方についての質問します。
MySQL5.5を使用しています。

あるテーブルのデータを比較して存在するものを削除したいと考えています。

下記のSELECTは成功するのですが

SELECT * FROM tb1 as T1 WHERE EXISTS (SELECT * FROM tb1 as T2 WHERE T1.id = T2.id AND T1.created < T2.created);

DELETEにするとSQL syntaxエラーとなります。

DELETE * FROM tb1 as T1 WHERE EXISTS (SELECT * FROM tb1 as T2 WHERE T1.id = T2.id AND T1.created < T2.created);

なにか違うのでしょうか?


●質問者: 匿名質問者
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答1号

アスタリスク、要らない。


質問者から

申し訳ありません。
アスタリスクがなくてもエラーでした。
下記のSQLとなります。

DELETE FROM tb1 as T1 WHERE EXISTS (SELECT * FROM tb1 as T2 WHERE T1.id = T2.id AND T1.created < T2.created);


2 ● 匿名回答2号

DELETE FROM tb1 WHERE EXISTS (SELECT 1 FROM tb1 as T2 WHERE tb1.id = T2.id AND tb1.created < T2.created);


匿名回答3号さんのコメント
↑この人の回答をもう一度、よく見ましょう

匿名質問者さんのコメント
ありがとうございました。 Syntax エラーはなくなりましたが、下記のようなエラーとなりました。 なにか制約がありそうです... ERROR 1093 (HY000): You can't specify target table 'tb1' for update in FROM clause

匿名回答2号さんのコメント
DELETE FROM tb1 WHERE EXISTS (SELECT 1 FROM tb1 as T2 WHERE tb1.id = T2.id AND tb1.created < T2.created) T3; かな?

匿名質問者さんのコメント
ありがとうございます。 サブクエリー関連のエラーだということがわかってきましたが いただいた方法ですと ERROR 1054 (42S22): Unknown column 'tb1.id' in 'where clause' となりました。 テンポラリーの定義の仕方でしょうか?

匿名回答2号さんのコメント
tb1 のクリエイトテーブル文を 提示してください。

匿名質問者さんのコメント
下記のようにサブクエリーを回避するSQLにしました。 DELETE FROM tb1 WHERE EXISTS ( SELECT id FROM ( select id from tb1 as T2 WHERE tb1.i_id = T2.i_id AND tb1.created < T2.created) as temp); テーブルは下記のようになります。 | tb1 | CREATE TABLE `tb1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `c_id` bigint(20) unsigned NOT NULL, `i_id` bigint(20) unsigned NOT NULL, `collected` datetime DEFAULT NULL, `received` datetime DEFAULT NULL, `created` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `ix_c` (`c_id`), KEY `ix_i` (`i_id`), KEY `ix_ci` (`i_id`,`c_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1348 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +-----------------+ お手数をおかけします。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ