web-dev-qa-db-fra.com

MySQL INSERT INTO ... VALUES et SELECT

Existe-t-il un moyen d’insérer des valeurs prédéfinies et des valeurs obtenues d’une requête select? Par exemple:

INSERT INTO table1 VALUES ("A string", 5, [int]).

J'ai la valeur de "A string" et le nombre 5, mais je dois trouver la valeur [int] à partir d'un select comme ceci:

SELECT idTable2
FROM table2
WHERE ...

cela me donne cet identifiant à mettre dans table1.

Comment fusionner cela en une seule déclaration?

50
TheEnigmist

Utilisez un insert ... select requête, et mettez les valeurs connues dans la select:

insert into table1
select 'A string', 5, idTable2
from table2
where ...
77
Guffa

utilisez juste une sous-requête juste comme:

INSERT INTO table1 VALUES ("A string", 5, (SELECT ...)).
62
zoujyjs
 
 INSERT INTO nom_table1 
 (Id, nom. FROM nom_table2; 
11
Mahbub Tito

essaye ça

INSERT INTO TABLE1 (COL1 , COL2,COL3) values
('A STRING' , 5 , (select idTable2 from Table2) )
where ...
10
echo_Me

Toutes les autres réponses résolvent le problème et ma réponse fonctionne de la même manière que les autres, mais de manière plus didactique (cela fonctionne sur MySQL ... je ne connais pas d'autres serveurs SQL):

INSERT INTO table1 SET 
  stringColumn  = 'A String', 
  numericColumn = 5, 
  selectColumn  = (SELECT idTable2 FROM table2 WHERE ...);

Vous pouvez vous référer à la documentation MySQL: INSERT Syntax

7
Felypp Oliveira
INSERT INTO table1 
SELECT "A string", 5, idTable2
FROM table2
WHERE ...

Voir: http://dev.mysql.com/doc/refman/5.6/en/insert-select.html

2
Jono Guthrie

Essayez ce qui suit:

INSERT INTO table1 
SELECT 'A string', 5, idTable2 idTable2 FROM table2 WHERE ...
1
Korhan Ozturk
INSERT INTO table1 (col1, col2)
SELECT "a string", 5, TheNameOfTheFieldInTable2
FROM table2 where ...
1
Laurent S.

Essaye ça:

INSERT INTO table1 SELECT "A string", 5, idTable2 FROM table2 WHERE ...
0
neelsg