0

我有一个示例表,例如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;

但这是失败的。怎么做 谢谢

4

1 回答 1

3

尝试这个

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

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

于 2013-09-21T02:11:35.060 回答