如表: test
字段内容:id|value
--|-----
1 | a
2 | b
3 | c需求是: update test set value=a1 where id=1;
         update test set value=b1 where id=2;
         update test set value=c1 where id=3;
请问有没方法可以实现一条语句达到上面三条update的效果
问题背景:
          insert 操作如果使用values的话,一次插入多条记录,在性能上会比一条一条的插入要好很多
          不知道update有没同样的实现?

解决方案 »

  1.   

    update test set `value` =concat(`value`,1);
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    THANKS TO ACMAIN_CHM
    修改后的问题是:
    1、环境# phpMyAdmin SQL Dump
    # version 2.5.3
    # http://www.phpmyadmin.net
    #
    # Host: localhost
    # Generation Time: Mar 10, 2011 at 02:08 PM
    # Server version: 5.0.22
    # PHP Version: 4.3.8

    # Database : `test`
    # # --------------------------------------------------------#
    # Table structure for table `test`
    #CREATE TABLE `test` (
      `id` int(20) NOT NULL,
      `value` varchar(20) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;#
    # Dumping data for table `test`
    #
    INSERT INTO `test` VALUES (1, 'a');
    INSERT INTO `test` VALUES (2, 'b');
    INSERT INTO `test` VALUES (3, 'c');2、操作
    UPDATE `test` SET `value` = 'hea' WHERE `id` = '1' LIMIT 1 ;
    UPDATE `test` SET `value` = 'ddd' WHERE `id` = '2' LIMIT 1 ;
    UPDATE `test` SET `value` = 'awq' WHERE `id` = '3' LIMIT 1 ;
    3、结果
        id  value  
        1   hea 
        2   ddd 
        3   awq 
    4、期望
    能够使用一条SQL语句实现操作2的效果(测试例子是3条记录,实际环境有上万条)
    ---------------
       如果还有没描述清楚的地方,麻烦请指出,学习了
      

  4.   

    mysql> select * from test;
    +----+-------+
    | id | value |
    +----+-------+
    |  1 | a     |
    |  2 | b     |
    |  3 | c     |
    +----+-------+
    3 rows in set (0.14 sec)mysql> update test set `value`=case id
        ->  when 1 then 'hea'
        ->  when 2 then 'ddd'
        ->  when 3 then 'awq'
        ->  end     ;
    Query OK, 3 rows affected (0.08 sec)
    Rows matched: 3  Changed: 3  Warnings: 0mysql> select * from test;
    +----+-------+
    | id | value |
    +----+-------+
    |  1 | hea   |
    |  2 | ddd   |
    |  3 | awq   |
    +----+-------+
    3 rows in set (0.00 sec)mysql>
      

  5.   

    update test set `value`=if(id=1,'hea',if(id=2,'ddd','awq'))