Как вставить значение на основе поиска из другой таблицы? - PullRequest
7 голосов
/ 21 апреля 2010

Мне нужно найти способ сделать INSERT INTO table A, но одно из значений - это что-то из поиска в таблице B, позвольте мне проиллюстрировать.

У меня есть 2 следующие таблицы:

Таблица A:

A1: String
A2: Integer value coming from table B
A3: More Data

Таблица B:

B1: String
B2: Integer Value

Пример строки A: {"Value", 101, MoreData} Пример строки B: {"English", 101}

Теперь я знаю, что мне нужно вставить следующее в A {"Value2", "English", MoreData}, но, очевидно, это не сработает, поскольку во втором столбце ожидается целое число, а не слово "English" поэтому мне нужно сначала выполнить поиск в таблице B.

Примерно так:

INSERT INTO tableA (A1, A2, A3) 
VALUES ("Value2", SELECT B2 FROM tableB where B1="English", MoreData);

Очевидно, что это не работает как есть ...

Есть предложения?

Ответы [ 2 ]

6 голосов
/ 21 апреля 2010

как насчет:

Insert into tableA ( a1,a2,a3) 
(select "value2", b2, moreData from TableB where B1 = "English")
1 голос
/ 24 июля 2012

Похоже, что @Andriy M прокомментировал: кросс-СУБД без скобок:

insert into tableA (a1, a2, a3) 
select 'value2', b2, moreData from tableB where B1='English'
...