web-dev-qa-db-fra.com

Insert SQL avec des valeurs select et codées en dur

À titre d'illustration, supposons que j'ai une base de données Films (titre, réalisateur, coût, bénéfices).

Maintenant, j'aimerais insérer une nouvelle ligne dans la table Movies en fonction d'un directeur trouvé dans une autre table, puis de valeurs codées en dur.

INSERT INTO Movies 
SELECT name 
  FROM Directors 
 WHERE name = 'Lucas';

C’est ainsi que je comprends les insertions de select qui fonctionnent mais que se passe-t-il si je veux utiliser les options select ainsi que les valeurs codées en dur Donc, quelque chose théoriquement comme ça:

INSERT INTO Movies 
VALUES(Star Wars,(SELECT name 
                    FROM Directors 
                   WHERE name='Lucas'), 50000, 1000000);

Est-ce possible?

20
Msencenb
INSERT INTO Movies (Title, Director, Cost, Profits)
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors WHERE name = 'Lucas'
24
Phil

Étant donné que vous pouvez spécifier des valeurs codées en dur dans l'instruction select, il est probablement plus propre d'utiliser:

insert into movies (title, director, cost, profits)
   select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas';
8
paxdiablo

Oui, c'est possible Utilisateur INSERT .. syntaxe SELECT. Voir référence pour plus de détails. Les valeurs codées en dur doivent être dans votre requête SELECT plutôt que dans les valeurs. Par exemple. 

INSERT INTO Movies
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors 
WHERE name = 'Lucas';
5
Manny

vous avez une base de données sous forme de films (titre, réalisateur, coût, bénéfices). Si vous voulez entrer les valeurs dans les tableaux respectifs, sélectionnez d’abord le tableau, puis insérez-en des valeurs.

1
Cold-Blooded