将列中的最大值插入到同一列FAILS中

时间:2013-09-21 02:03:35

标签: mysql

我有一个示例表,例如 http://www.sqlfiddle.com/#!2/31e65

CREATE TABLE `t1`(
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(40),
  `signal` int(4),
  PRIMARY KEY (`id`),
  KEY `id` (`id`),
  KEY `signal` (`signal`)
)ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `t1`
(`name`, `signal`)
VALUES
    ('a', 1),
    ('b', 2),
    ('c', 3),
    ('d', 4);

我尝试向表格t1插入新记录,其中signal列中的值为该列中的最大值+1

这是我正在使用的代码

Lock tables t1 write;
INSERT INTO `t1` 
(`name`, `signal`) 
VALUES
(SELECT MAX(signal)+1 FROM t1, 'e');
unlock t1;

但那是失败的。如何做到这一点,谢谢

1 个答案:

答案 0 :(得分:3)

试试这个

INSERT INTO `t1` 
(`name`, `signal`)
SELECT
   'e', MAX(`signal`)+1 FROM t1

我认为您已将列的顺序颠倒过来了。我改变了它。