首页 > 解决方案 > Mysql插入具有相同表计数的值

问题描述

无法理解为什么这样的事情不起作用,我确实在这里阅读了很多官方文档和答案,但仍然无法弄清楚如何在一个没有事务的插入查询中实现这项工作,如果可能的话。

我需要类似的东西:

INSERT INTO PREDMETIP
    (`predp_nas`)
VALUES((SELECT COUNT(strp_ID) FROM PREDMETIP WHERE strp_ID = '1')+1,

我需要这个结果:

| predp_id | strp_ID | predp_nas |
| -------- | ------- | --------- |
| 1        | 1       |     1     |
| 2        | 1       |     2     |
| 3        | 1       |     3     |
| 4        | 2       |     1     |
| 5        | 2       |     2     |
| 6        | 3       |     1     |

其中 predp_nas 列是每个新插入的 strp_ID 列 + 1 的计数。

CREATE TABLE PREDMETIP (
  predp_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  strp_ID INT NOT NULL,
  predp_nas INT(11) NULL
);

INSERT INTO PREDMETIP
    (`strp_ID`)
VALUES(1),(1),(1),(2),(2),(3);

INSERT INTO PREDMETIP
    (`strp_ID`, `predp_nas`)
VALUES(1, 
   (SELECT COUNT(strp_ID) FROM PREDMETIP WHERE strp_ID = '1')+1);

例如,我制作了一个DB 小提琴

如果您删除最后一个插入是表中的数据,但我需要第二次插入才能工作并给我结果:

| predp_id | strp_ID | predp_nas |
| -------- | ------- | --------- |
| 7        | 1       |     4     |

从正在插入的同一个表中选择计数显然存在问题。话虽如此,我知道如何进行交易并在两个查询中执行此操作。但如果可能的话,我对 1 个查询解决方案感兴趣。我有一份文件,我错过了一些知识来完成这项工作。

先感谢您。

标签: mysqlsqlselectcountsql-insert

解决方案


看起来您想要以下insert ... select语法:

INSERT INTO PREDMETIP(strp_ID, predp_nas)
SELECT 1, COUNT(*) + 1 FROM PREDMETIP WHERE strp_ID = 1

推荐阅读