0

我需要根据每个 customer_id 的 att_id 替换/更新表中的值。该表如下所示:

ID att_id customer_id value
1  5            1     name
2  30           1     12345
3  40           1      
4  5            2     name2
5  30           2     12345
6  40           2     

我想像这样替换它:

ID att_id customer_id value
1  5            1     name
2  30           1     
3  40           1     12345 
4  5            2     name2
5  30           2     
6  40           2     12345
4

4 回答 4

3

更新:根据您的评论...我需要找到属性 30 的值,检查它们是否是手机号码,如果是真的,请将其写入属性 40 的值...您的查询可能如下所示

UPDATE table1 t1 JOIN table1 t2
    ON t1.customer_id = t2.customer_id
   AND t1.att_id = 40 
   AND t2.att_id = 30
   SET t1.value = t2.value
  --  ,t2.value = NULL -- uncomment if you need to clear values in att_id = 30 at the same time
 WHERE t2.value REGEXP '^[+]?[0-9]+$'

您可能需要调整正则表达式以正确匹配您的记录(“手机号码”)

这是SQLFiddle演示


从你的描述中很难确定,但如果你需要交换每个 customer_id 的值,att_id 3040可以做这样的事情

UPDATE table1 t1 JOIN table1 t2
    ON t1.customer_id = t2.customer_id
   AND t1.att_id = 40 
   AND t2.att_id = 30
   SET t1.value = t2.value,
       t2.value = t1.value

这是SQLFiddle演示

或者,如果您需要输入 to 的值att_id = 30att_id = 40“清除”的值att_id = 30

UPDATE table1 t1 JOIN table1 t2
    ON t1.customer_id = t2.customer_id
   AND t1.att_id = 40 
   AND t2.att_id = 30
   SET t1.value = t2.value,
       t2.value = NULL 

这是SQLFiddle演示

于 2013-08-12T11:16:58.180 回答
1

这是交换att_id等于 30 和 40 的行上的值的一般方法:

update t join
       t t30
       on t.customer_Id = t30.customer_Id and t30.att_id = 30 join
       t t40
       on t.customer_Id = t40.customer_Id and t40.att_id = 40 join
    set t.value = (case when att_id = 30 then t40.value 
                        when att_id = 40 then t30.value 
                        else t.value
                   end)
    where att_id in (30, 40);
于 2013-08-12T11:18:27.027 回答
0

首先,您删除 att_id = 30 的值

UPDATE tablename SET value="" WHERE att_id=30;

然后设置 att_id=40 的值

UPDATE tablename SET value="12345" WHERE att_id=40;

于 2013-08-12T11:14:42.207 回答
0
UPDATE tableName SET value=12345 WHERE ID=2;
UPDATE tableName SET value="" WHERE ID=3;
UPDATE tableName SET value=12345 WHERE ID=6;
UPDATE tableName SET value="" WHERE ID=5;

这是命令。有关更新的教程,请参见 http://www.tutorialspoint.com/mysql/mysql-update-query.htm

于 2013-08-12T11:19:16.700 回答