Як я можу вставити значення в таблицю, використовуючи підзапит з кількома результатами?


96

Я дуже вдячний вашій допомозі.

Можливо, це досить проста проблема для вирішення - але я не той .. ;-)

У мене є дві таблиці в 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 (підказка: ви можете навести курсор на позначку часу, щоб отримати секунди)
Ромер

Відповіді:


148

Ти хочеш:

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

23

Спробуйте це:

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


12

Якщо ви вставляєте один запис у свою таблицю, ви можете це зробити

INSERT INTO yourTable 
VALUES(value1, value2)

Але оскільки ви хочете вставити більше одного запису, ви можете використовувати a 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.