2009-10-14 5 views

Répondre

16

Changez votre insert pour ressembler à ce qui suit:

insert into sample_elements (name,position,ownerel) select 'Namespace1',id,0 from sample_elements where name='Namespace1'; 

Fondamentalement, au lieu d'utiliser les valeurs utiliser uniquement l'instruction select et insérer les valeurs harcoded sous forme de colonnes

2

Je pense que vous pouvez le faire. Vous pouvez utiliser:

INSERT INTO table (..fields) SELECT ..fields.. FROM table; 
0

Je ne connais pas mysql mais pouvez-vous essayer ce qui suit?

insert into sample_elements select name, id, 0 from sample_elements where name='Namespace1' 
0

Je ne suis pas sûr. Je pense que cet insert à l'intérieur de sélectionner pour trouver existe déjà ou dans quel but.

Merci

-1

est un autre format ici qui fonctionne, en utilisant le 'SET' construire. Je préfère ce format pour la plupart de mes SQL car les noms de champs sont associés aux valeurs - rend la maintenance beaucoup plus facile que les listes de champs/valeurs qui dépendent totalement du positionnement.

INSERT INTO sample_elements SET 
name = 'Namespace1', 
position = (SELECT id FROM sample_elements WHERE name='Namespace1'), 
ownere1 = 0; 
+0

-1 Cette solution ne fonctionne pas pour MySQL, que l'OP utilise clairement. Voir cette réponse: http://stackoverflow.com/a/14302701/998919 – fgblomqvist

+0

ça marche sur mySQL, c'est là que je l'ai utilisé. S'il vous plaît clarifier où/comment cela ne fonctionne pas, car je pense que vous trouverez votre implémentation/version/pilote qui est le problème, pas mySQL. salutations –

+0

J'ai déjà spécifié, vérifiez la réponse que j'ai liée. Veuillez indiquer la version de la base de données MySQL que vous avez essayée au moins. – fgblomqvist

Questions connexes