Come posso inserire valori in una tabella, utilizzando una sottoquery con più di un risultato?


96

Apprezzerei davvero il tuo aiuto.

Probabilmente è un problema abbastanza semplice da risolvere, ma non sono io ... ;-)

Ho due tabelle in SQL Server:

  1. articolo
  2. prezzi

Ora voglio selezionare un certo insieme di ID e inserire alcune voci nella tabella dei prezzi con quegli ID.

ad esempio (SQL sbagliato e non funzionante)

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

Errore SQL -> la sottoquery ha più di 1 valore

grazie per l'aiuto


5
Wow! Tante risposte corrette tutte il 13 marzo 12 alle 21:18 (suggerimento: puoi passare il mouse sopra il timestamp per ottenere i secondi)
Rohmer

Risposte:


148

Tu vuoi:

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

dove devi solo codificare i campi delle costanti.


INSERT INTO iden_course(Cse_M_ID, Cse_M_Name, Cse_M_ShName, Cse_M_TotSem, Cse_M_CreatedDate) VALORI ( 'ID', 'BJF', 'BJfg', '4', Now ()) selezionare max (Cse_M_ID) come ID da iden_course come aggiungere in questa interrogazione
SANDEEP

23

Prova questo:

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

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

12

Se stai inserendo un record nella tua tabella, puoi farlo

INSERT INTO yourTable 
VALUES(value1, value2)

Ma poiché vuoi inserire più di un record, puoi usare a SELECT FROMnella tua istruzione SQL.

quindi vorrai fare questo:

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

3

la sottoquery ha il seguente aspetto

 insert into table_name (col1,col2,....) values (select col1,col2,... FROM table_2 ...)

spero che questo aiuto


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.