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

标签 mysql sql

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

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

这是带有一些现有数据的表结构,我想要做的是,我想在插入新记录时将地址的优先级更新为用户的MAX(order)+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(order) 算作一列。

最佳答案

请尝试以下查询:

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

关于mysql - 在表中插入值时的内部 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248325/

相关文章:

mysql - 如何一次打印多个查询,生成 1 个表?

php - 二维 MySQL 查询?

mysql查询当外键关系时用单个查询删除多个表

sql - 带主键 ID 的批量插入

php - 如何在 PDO 中将查询结果检索为数组?

MySQL插入一个选择计数

php - 查询一个Mysql数据库的多个表

Mysql select alias in where 子句

mysql - 如何将时间戳附加到 curdate() 返回的 mysql 时间?

mysql - 更新mysql集群的查询