2011-05-05 82 views
17

Tha thứ cho tôi vì tôi là người mới tương đối với SQL. Nhưng tôi đang cố gắng lấy dữ liệu đã sửa đổi từ một truy vấn SELECT trên một bảng và sử dụng nó để điền dữ liệu vào một bảng khác.SQL INSERT dựa trên kết quả SELECT

SELECT ID FROM TABLE WHERE VALUE=10 

Tôi muốn chèn của kết quả ID vào bảng khác, nhưng với những thay đổi như vậy mà giá trị là:

1stString.ID.2ndString

tôi đã tìm thấy câu trả lời về cách sử dụng các ID từ SELECT trong chèn, nhưng tôi không thể có vẻ để làm cho nó hoạt động khi cố gắng nối. Ngoài ra còn có các giá trị khác mà tôi đang chèn, nhưng chúng literals (Tôi đang cố gắng để khởi tạo cài đặt phím mặc định cho trình bày trong bảng khác của ID.

Sử dụng MS SQL Studio 2008, btw.

+1

cho chúng tôi biết bạn đã thử gì – BlackBear

Trả lời

29
INSERT INTO table (field) 
SELECT '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10 

Edit - đáp lại bình luận: bạn đang đi đúng hướng, nhưng bạn muốn chọn chuỗi mã hóa cứng của bạn từ bảng của bạn, như thế này:

INSERT INTO table1 (field1, field2, field3) 
SELECT '1stVal', '2ndVal', '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10 

Đây cũng là illustrat ed trong câu trả lời của Dustin Laine.

+0

SQL Studio vẫn sử dụng + cho nối chuỗi không? Nếu không, nó sẽ là ||. –

+1

Điều này dường như là một giải pháp khá âm thanh. Điều gì xảy ra nếu tôi cần chèn nhiều giá trị hơn, KHÔNG phải từ bảng 2? –

+1

^Nhận xét cuối cùng đã bị cắt. Ví dụ, nếu tôi muốn đặt "1", "String", '1stString.' + Cast (id là varchar (50)) + '.2ndString' vào các cột khác nhau của bảng, trong đó thông tin duy nhất đến từ table2 là "id". Nó sẽ chỉ là INSERT INTO table1 (field1, field2, field3) 'firstval', '2ndval', SELECT '1stString.' + cast (id là varchar (50)) + '.2ndString' FROM table2 WHERE otherID = 10? Xin lỗi, định dạng khó hiểu với các nhận xét ... –

6
INSERT table1 
(
    f1, f2, f3, f4 
) 
SELECT f1, f2, f3, 'defaultval' as f4 
FROM table2 
WHERE value = 1 
Các vấn đề liên quan