2009-08-26 5 views
1

Я пытаюсь вставить select, но я в замешательстве, как заполнить только один элемент в таблице назначения из select и заполнить остальные статическими значениями.mysql insert select conundrum

Это все в хранимой процедуре ... так ... вот что я пытаюсь сделать ...

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

table people_with_pets 
persons_name | pets_name 
Arnold  | rex 

определена переменная владелец = «Джо»;

so ... joe любит кошек, и я хочу вставить все имена из таблицы animals в таблицу people_with_pets, а также «joe».

так, я хотел бы select name from animals where type like 'cats';

и вставьте полученные значения наряду с «Джо» в (в данном случае 2) новые строки в people_with_pets.

Я не уверен, что выбор вставки выбирает меня, похоже, может, но я не уверен, как его использовать.

ответ

1

INSERT INTO people_with_pets (people_name, pets_name) SELECT 'Joe', имя FROM animals WHERE type = 'cat';

4

INSERT INTO people_with_pets SELECT 'Joe', имя FROM animals WHERE type = 'cat';

0

Я предполагаю, что вы хотите связать все типы кошек с Джо и вставить в таблицу people_with_pets, чтобы показать persons_name Джо вместе с другими именами кошек, используя один оператор выбора вставки.

Так что я сделал:

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

Результат должен показать вам это:

mysql> select * from people_with_pets; 

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

3 строки в наборе (0,00 сек)

+0

Извините, пожалуйста, обратите внимание, что тип = ' cat 'более точный, чем тип типа «кошка». Как будто у вас есть сома звериного типа, все может запутаться. Хотя для текущей ситуации оба будут возвращать тот же результат. – user3068895