在表中插入值时的内部SQL语句

时间:2017-04-06 07:21:05

标签: mysql sql

我有一个名为addresses_users的表,它将地址映射到用户。表结构是。

------------------------------------------
id  | projectid   | crmconfigid  | order     |
------------------------------------------
1   |    1        |    1         |   1       |
------------------------------------------
2   |    2        |    1         |   3       |
------------------------------------------
3   |    3        |    1         |   2       |
------------------------------------------

这是包含一些现有数据的表结构,我想要做的是,我想在插入新记录时将地址的优先级更新为用户的MAX(顺序)+1。

我正在尝试使用sql

INSERT INTO projectcrm VALUES (1,1, (SELECT MAX(order)+1 FROM projectcrm WHERE projectid = 1));

例如:

INSERT INTO projectcrm SELECT 1, 1, MAX(order) FROM projectcrm WHERE projectid = 1对我不起作用。

给出错误: 错误代码:1136 列数与第1行的值计数不匹配

也许它不会将MAX(顺序)计为一列。

1 个答案:

答案 0 :(得分:1)

请尝试以下查询:

INSERT INTO addresses_users (projectid, crmconfigid, order)
SELECT 1, 1, MAX(order) + 1
FROM addresses_users
WHERE projectid = 1