0

sample という名前のテーブルが 1 つあり、3 つの列があります。

id   customer   default_address

1     1         0   
2     1                 0

3     1         0   
4     1         0   
5     2         0   
6     2         0   
7     3         0   
8     3         0   
9     2         0

10    2         0

ここでは、顧客ごとにグループ化し、最初のデフォルト アドレスを 1 に更新し、顧客ごとに残りをすべて 0 にします。どのようにmysqlクエリを行うのですか? ありがとう

4

3 に答える 3

1
UPDATE  tb a
        LEFT JOIN
        (
            SELECT  customer, MIN(id) id
            FROM    tb
            GROUP   BY customer
        ) b ON a.customer = b.customer AND
                a.ID = b.ID
SET     a.default_address = b.ID IS NOT NULL
于 2013-10-26T08:11:27.833 に答える
0
Update Table1 
INNER JOIN (Select Min(`id`) as MinID,`customer`
From Table1 Group by `customer`) t2
SET Table1.`default_address` = 1
WHERE Table1.`id` = t2.MinID;

サンプルフィドル

于 2013-10-26T08:18:33.673 に答える
0
UPDATE sample 
  LEFT JOIN 
  (SELECT MIN(id) id,customer 
   FROM sample 
   GROUP BY customer) t ON sample.customer=t.customer 
SET default_address="1" 
WHERE sample.id=t.id;

これはうまくいくはずです。

于 2013-10-26T08:14:33.720 に答える