Birden fazla sonucu olan bir alt sorgu kullanarak bir tabloya nasıl değer ekleyebilirim?


102

Yardımın için gerçekten minnettar olurum.

Muhtemelen çözülmesi oldukça basit bir problem - ama ben tek değilim .. ;-)

SQL Server'da iki tablom var:

  1. makale
  2. Fiyat:% s

Şimdi belirli bir kimlik seti seçmek ve bu kimliklerle fiyat tablosuna bazı girişler eklemek istiyorum.

örneğin (yanlış ve çalışmayan SQL)

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

SQL Hatası -> alt sorguda 1'den fazla değer var

yardım için teşekkürler


5
Vaov! 13 Mart 2012 saat 21: 18'de pek çok doğru cevap (ipucu: saniyeleri görmek için zaman damgasının üzerine gelebilirsiniz)
Rohmer

Yanıtlar:


155

İstediğiniz:

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

sadece sabit alanları sabit kodlamanız.


INSERT INTO iden_course(Cse_M_ID, Cse_M_Name, Cse_M_ShName, Cse_M_TotSem, Cse_M_CreatedDate) DEĞERLER (Şimdi 'Kimlik', 'BJF', 'BJfg', '4', ()) seçmek nasıl bu sorguda eklemek için iden_course gelen kimliği gibi max (Cse_M_ID)
SANDEEP

24

Bunu dene:

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

Tablonuza bir kayıt ekliyorsanız, şunları yapabilirsiniz:

INSERT INTO yourTable 
VALUES(value1, value2)

Ancak birden fazla kayıt eklemek istediğinizden SELECT FROM, SQL deyiminizde bir kullanabilirsiniz.

yani bunu yapmak isteyeceksiniz:

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

3

alt sorgu şuna benzer:

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

umarım bu yardım eder


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.