0
votes

MySQL Insérer la valeur avec le nombre de colonnes de table même

Avoir de la difficulté à comprendre pourquoi quelque chose comme ça ne fonctionnera pas, j'ai lu beaucoup de documents officiels et de réponses ici, mais je n'ai toujours pas de difficulté à comprendre comment rendre ce travail dans une requête sur Insérer sans transactions si même possible.

J'ai besoin de quelque chose comme: xxx

J'ai besoin de ce résultat: xxx

où la colonne PREDP_NAS est compte de STRP_ID Colonne + 1 sur chaque nouvel insert. xxx

j'ai fait un dB violon par exemple .

Si vous supprimez le dernier insert, ce sont les données dans le tableau, mais j'ai besoin de second insert pour travailler et me donner le résultat de: xxx

il y a De toute évidence, un problème de sélection d'un compte à partir de la même table que l'insertion est en cours. Cela étant dit, je sais faire une transaction et faire cela dans deux questions. Mais je m'intéresse à 1 solution de requête si possible. J'ai un classement que je manque de connaissances pour faire ce travail.

Merci d'avance.


0 commentaires

3 Réponses :


2
votes

On dirait que vous voulez que le insérer ... Sélectionnez CODE> Syntaxe:

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


4 commentaires

Merci, mais non, la requête est beaucoup plus grosse que l'exemple. C'était juste une valeur de colonne que je dois calculer sur insertion. Aldo que cela fonctionne également bien sûr par exemple.


@ikik. . . Je pense que c'est la meilleure réponse à la question que vous avez posée.


@Gordonlinoff malade être honnête et dire que j'ai du mal à sous-estimer comment cela fonctionne même. Et je ne peux pas faire fonctionner dans ma requête de production Sorcière est beaucoup plus grande et utilise la syntaxe de valeurs. (sorcière est mentionnée dans le titre et exemple). Je dois manquer une logique ici ou quelque chose. Gardez à l'esprit 1 est en fait une variable PHP. Je suis confus, ça marche dans l'exemple.


@ikik: Vous passeriez généralement les autres variables en tant que littéraux dans le , comme: Sélectionnez: Var1,: Var2,: Var3, Noun (*) + 1 de Predmep où STRP_ID =: var1 ...



1
votes

MySQL n'autorise pas les références directes à la table mise à jour dans les insertions, les suppressions et les mises à jour.
Vous devez nier votre requête à l'intérieur d'une autre comme ceci: xxx

voir le Demo .


0 commentaires

1
votes

Vous avez besoin de spécifier un alias pour la sélection interne comme ci-dessous pour la distinguer de la requête principale.

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


0 commentaires