Как я могу вставить значения в таблицу, используя подзапрос с более чем одним результатом?


98

Я очень признателен за вашу помощь.

Возможно, это довольно простая проблема, но я не тот… ;-)

У меня есть две таблицы в SQL Server:

  1. статья
  2. Цены

Теперь я хочу выбрать определенный набор идентификаторов и вставить несколько записей с этими идентификаторами в таблицу цен.

например (неправильный и неработающий SQL)

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);

Ошибка SQL -> подзапрос имеет более 1 значения

Спасибо за помощь


5
Вот Это Да! Так много правильных ответов 13 марта '12 в 21:18 (подсказка: вы можете навести курсор на метку времени, чтобы узнать секунды)
Ромер

Ответы:


150

Вы хотите:

insert into prices (group, id, price)
select 
    7, articleId, 1.50
from article where name like 'ABC%';

где вы просто жестко кодируете постоянные поля.


INSERT INTO iden_course(Cse_M_ID, Cse_M_Name, Cse_M_ShName, Cse_M_TotSem, Cse_M_CreatedDate) VALUES ( 'ID', 'BJF', 'BJfg', '4', Now ()) выбрать макс (Cse_M_ID) как идентификатор из iden_course , как добавить в этот запрос
SANDEEP

24

Попробуй это:

INSERT INTO prices (
    group, 
    id,
    price
) 
SELECT
    7,
    articleId,
    1.50
FROM
    article 
WHERE 
    name LIKE 'ABC%';


12

Если вы вставляете одну запись в свою таблицу, вы можете сделать

INSERT INTO yourTable 
VALUES(value1, value2)

Но поскольку вы хотите вставить более одной записи, вы можете использовать SELECT FROM в своем операторе SQL.

так что вы захотите сделать это:

INSERT INTO prices (group, id, price) 
SELECT 7, articleId, 1.50
from article 
WHERE name LIKE 'ABC%'


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.