2009-08-26 10 views
1

J'essaie d'insérer select mais je suis confus quant à la façon de remplir seulement 1 élément dans la table de destination de la sélection, et remplir le reste avec des valeurs statiques.mysql insert select conundrum

C'est dans une procédure stockée ... donc ... voici ce que je suis en train de faire ...

table:animals 
id |type| name 
1 |cat | mittens 
2 |cat | fluffy 
3 |dog | rex 

table people_with_pets 
persons_name | pets_name 
Arnold  | rex 

variable définie propriétaire = « Joe »;

alors joe aime les chats et je veux insérer tous les noms de la table animals dans la table people_with_pets, avec "joe".

, je voudrais select name from animals where type like 'cats';

et insérer les valeurs résultantes ainsi que de nouvelles lignes dans people_with_pets « Joe » dans (dans ce cas 2). Je ne suis pas sûr si insert select m'obtient ceci, il semble que cela pourrait, mais je ne suis pas sûr comment l'utiliser.

Répondre

1

INSERT INTO personnes_avec_pets (nom_personnel, nom_animaux) SELECT 'Joe', nom FROM animaux WHERE type = 'chat';

4

INSÉRER INTO people_with_pets SELECT 'Joe', nom FROM animaux où type = 'cat';

0

Je suppose que ce que vous voulez faire est d'associer tous les types de chat à Joe et insérer dans la table people_with_pets, pour montrer le persons_name Joe avec d'autres noms de chat, en utilisant une seule instruction select insert.

Donc, il est ce que je l'ai fait:

INSERT INTO people_with_pets 
(SELECT 'Joe', name FROM animals WHERE type like 'cat'); 

Le résultat devrait vous montrer ceci:

mysql> select * from people_with_pets; 

+--------------+-----------+ 
| persons_name | pets_name | 
+--------------+-----------+ 
| Arnold  | rex  | 
| Joe   | mittens | 
| Joe   | fluffy | 
+--------------+-----------+ 

3 lignes set (0.00 sec)

+0

Désolé s'il vous plaît noter que le type = ' Le chat est plus précis que le type "chat". Comme si vous aviez un poisson-chat de type animal, les choses pourraient devenir confuses. Bien que pour la situation actuelle les deux retourneront le même résultat. – user3068895

Questions connexes