【发布时间】:2020-05-25 19:57:19
【问题描述】:
无法理解为什么这样的事情不起作用,我确实在这里阅读了很多官方文档和答案,但仍然无法弄清楚如何在没有事务的情况下在一个插入查询中完成这项工作,如果可能的话。
我需要类似的东西:
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 fiddle for example。
如果您删除最后一个插入是表中的数据,但我需要第二次插入才能工作并给我结果:
| predp_id | strp_ID | predp_nas |
| -------- | ------- | --------- |
| 7 | 1 | 4 |
从正在插入的同一个表中选择计数显然存在问题。话虽如此,我知道如何进行交易并在两个查询中执行此操作。但如果可能的话,我对 1 个查询解决方案感兴趣。我有一份文件,我错过了一些知识来完成这项工作。
提前谢谢你。
【问题讨论】:
标签: mysql sql select count sql-insert