如表: 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有没同样的实现?
字段内容: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有没同样的实现?
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
修改后的问题是:
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条记录,实际环境有上万条)
---------------
如果还有没描述清楚的地方,麻烦请指出,学习了
+----+-------+
| 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>