mysql:14964
From: chuuken kenkou <chuuken kenkou <ken_ken_1962@xxxxxxxxxx>>
Date: Mon, 6 Jul 2009 23:50:28 +0900
Subject: [mysql 14964] Re: 複雑なdeleteの書き方
chuukenです。 提示されてデータに誤りがあるのでしょうかね? 検索条件で対象になるのは、id=3の行であり、削除対象になるのはuser_id=2に なるのでは? 他にも提示内容に、次のような誤りや適切かどうか?があるので、一応、念のため。 (1)表定義のunique指定中のmember_idが、列定義にない (2)date型のcreated列と日時が返るnow関数での比較は妥当な処理? (3)intarval → inerval MySQLでは、updateやdeleteの検索条件で、サブクエリした表そのものを更新 したり、削除したりできないという制限があります。 この制限を回避するには、MySQLの独自機能の「複数表のupdate、delete」を 利用するといった方法が考えられます。 例えば、こんな感じです。 delete t1 from t1,(select distinct user_id from t1 where page_id=1 and created + interval 7 day> current_date) as x where t1.user_id=x.user_id ---------------------------------------- > Date: Mon, 6 Jul 2009 18:14:39 +0900 > From: shu@xxxxxxxxxx > Subject: [mysql 14963] Re: 複雑なdeleteの書き方 > To: ml@xxxxxxxxxx > > 柳本さん > > ありがとうございます。 > ERROR 1093 (HY000):You can't specify target table 'test' for update in > FROM clause > となっております。 > サブクエリは無理!といわれているっぽいです。 > 1文では不可能なのでしょうか? > 無理な場合はストアドかPerlなどのプログラムから実行します。 > >> 柳本です。 >> >> delete from [テーブル名] >> where user_id in ( >> select user_id from [テーブル名] >> where page_id = 1 >> and created + cast('7 days' as interval)> now() >> ) >> >> こうですか?わかりません>< >> >> tysmk さんは書きました: >>> お世話になっております。 >>> >>> 以下のようなテーブルがあったと仮定します。 >>> >>> id int auto_increment, >>> user_id int, >>> page_id int, >>> created date, >>> primary key(id), >>> unique key(user_id,member_id,page_id) >>> >>> このテーブルから >>> page_id=1 and created+ intarval 7 day> now() >>> がtrueの場合、該当するuser_idのすべてを削除したいのですがどのように書け >>> ばいいでしょうか? >>> >>> わかりやすく書くと舌のようにデータが入っていた場合、消えるのは >>> id = 1 and id = 4 >>> になります。 >>> >>> id user_id page_id created >>> 1 1 1 2009-06-15 >>> 2 2 3 2009-07-05 >>> 3 2 1 2009-07-05 >>> 4 1 2 2009-07-05 >>> >>> >>> ご教示お願いいたします。 >>> >> >> >> >> > > _________________________________________________________________ 無料で使える25GB。USBメモリの代わりに、Webに保存 http://clk.atdmt.com/GBL/go/153787332/direct/01/
14954 2009-07-06 16:45 [tysmk <shu@xxxxxxxxx] 複雑なdeleteの書き方 14955 2009-07-06 16:57 ┣[<y-iida@xxxxxxxxxx> ] 14958 2009-07-06 17:15 ┃┗[tysmk <shu@xxxxxxxxx] 14957 2009-07-06 17:12 ┣[Yoshiaki Yanagimoto ] 14963 2009-07-06 18:14 ┃┗[tysmk <shu@xxxxxxxxx] -> 14964 2009-07-06 23:50 ┃ ┗[chuuken kenkou <ken_] 14965 2009-07-07 11:37 ┃ ┗["Kaname Kuji\(Y7\)" ] 14959 2009-07-06 17:42 ┣[Katsutoshi Nakatomi ] 14961 2009-07-06 17:57 ┃┗[tysmk <shu@xxxxxxxxx] 14962 2009-07-06 18:09 ┃ ┗[Katsutoshi Nakatomi ] 14966 2009-07-07 12:41 ┗["N.K." <nakai.kanako]