[前][次][番号順一覧][スレッド一覧]

mysql:13577

From: YuGo <YuGo <yu.gotou@xxxxxxxxxx>>
Date: Tue, 05 Dec 2006 17:29:30 +0900
Subject: [mysql 13577] Re: 複数テーブルのUPDATEがうまくいかない

こんにちは。
get_data.idが'001'のレコードのget_dataは1、user_idは86でuser_data.idが86
のpointは0だから
>user_data.point + get_data.get_point
は1+0=1でいいんじゃないですか。
どっちが正しいかはさておき、、sum関数などを使ってもっとわかりやすいSQLに
した方がよいと思います。

YuGo


> こんにちは、片岡と申します。
> 
> 複数テーブルを使ったUPDATEクエリに関して質問させて下さい。
> 
> 
> 下記「クエリ1」では全部で3レコードが結果として返ってきます。
> ところが「クエリ2」では1レコードしか更新されません。
> 
> 直感的には3レコード分更新されて、
> user_data.id=86の行の`point`は 7になりそうな気がするのですが、
> 実際にはuser_data.id=86の行の`point`は 1になります。
> このようなものなのでしょうか?
> 
> MS-Access2000で同じクエリを走らせると、こちらは
> user_data.id=86の行の`point`は 7になります。
> 他のデータベースは環境が無いので試せていませんが、
> 「クエリ2」のような書き方がおかしいのでしょうか。
> 
> 
> 
> ■クエリ1
> SELECT *
> FROM
>  get_data
>  INNER JOIN user_data ON get_data.user_id = user_data.id
> WHERE
>  (get_data.id IN ('001','002','003','004'));
> 
> ■クエリ2
> UPDATE get_data
>  INNER JOIN user_data ON get_data.user_id = user_data.id
> SET
>  user_data.point = user_data.point + get_data.get_point
> WHERE
>  (get_data.id IN ('001','002','003','004'));
> 
> 
> ■テーブル
> CREATE TABLE `user_data` (
>   `id` int(11) NOT NULL auto_increment,
>   `point` int(11) NOT NULL default '0',
>   PRIMARY KEY  (`id`)
> ) TYPE=InnoDB ;
> INSERT INTO user_data VALUES
> (86, 0), (87, 0), (89, 0);
> 
> CREATE TABLE `get_data` (
>   `id` varchar(32) NOT NULL default '',
>   `get_point` int(11) NOT NULL default '0',
>   `user_id` int(11) NOT NULL default '0',
>   PRIMARY KEY  (`id`)
> ) TYPE=InnoDB ;
> INSERT INTO get_data VALUES
> ('001', 1, 86), ('002', 2, 86), ('003', 4, 86),
> ('004', 8, 0), ('005', 16, 0), ('006', 32, 0);
> 
> ■MySQLバージョン
>  5.0.22(Linux版)、4.0.26(Windows版)
> 
> 
> 
> -----
> kataoka michio <kataoka@xxxxxxxxxx>
> 
> 
> 
> 

[前][次][番号順一覧][スレッド一覧]

     13575 2006-12-05 12:28 [IKEBE Tomohiro <ikeb] セミナー開催のお知らせ                  
     13576 2006-12-05 15:33 ┗["kataoka michio" <ka] 複数テーブルのUPDATEがうまくいかない  
->   13577 2006-12-05 17:29  ┗[YuGo <yu.gotou@xxxxx]                                     
     13578 2006-12-05 22:24   ┗["kataoka michio" <ka]