Не понимая, почему что-то вроде этого не работает, я прочитал много официальной документации и ответов здесь, но все еще не могу понять, как заставить это работать в одном запросе при вставке без транзакций, если это возможно.
Мне нужно что-то вроде:
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 решение запроса, если это возможно. У меня есть документация, в которой мне не хватает некоторых знаний, чтобы выполнить эту работу.
Заранее благодарю