arstero 发表于 2012-4-3 21:50:13

MySQL中SQL语句求助

先介绍表结构
表名 mtest
字段 id bigint, name varbinary;
主要目的是往mtest中插入语句,其中id的值是按照表中最大的加1得来,获取这个值的sql语句是正确的,如下:
select ifnull(max(id), 0)+1 from mtest;
然后希望是通过在一句sql语句中完成id值的生成和插入,来避免并发时导致的冲突。
因此我想写的sql语句如下:
插入语句 insert into mtest values (select ifnull(max(id), 0)+1 from mtest, 'china');

主要的错误信息如下:

insert into mtest values (select ifnull(max(id), 0)+1 from mtest, 'china');
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select ifnull(max(id), 0)+1 from mtest, 'china')' at line 1

kider 发表于 2012-4-5 11:47:30

应该这样:
INSERT INTO mtest SELECT IFNULL(MAX(id), 0)+1, 'china' FROM mtest ;

有个函数你也可以了解下: LAST_INSERT_ID()
页: [1]
查看完整版本: MySQL中SQL语句求助