2010-04-21 43 views
7

Tôi cần tìm cách để thực hiện một số INSERT INTO table A nhưng một trong các giá trị là một cái gì đó xuất phát từ tra cứu trên bảng B, cho phép tôi minh họa.Làm cách nào để chèn giá trị dựa trên tra cứu từ một bảng khác?

Tôi có 2 bảng sau:

Bảng A:

A1: String 
A2: Integer value coming from table B 
A3: More Data 

Bảng B:

B1: String 
B2: Integer Value 

Ví dụ dãy A: { "Giá trị", 101 , MoreData} Hàng ví dụ B: {"Tiếng Anh", 101}

Bây giờ, tôi biết tôi cần INSERT những điều sau vào A {"Value2", "English", MoreData} nhưng rõ ràng là sẽ không hoạt động vì mong đợi một số nguyên trong cột thứ hai chứ không phải từ "tiếng Anh", vì vậy tôi cần tra cứu trong Bảng B trước.

Something như thế này:

INSERT INTO tableA (A1, A2, A3) 
VALUES ("Value2", SELECT B2 FROM tableB where B1="English", MoreData); 

Rõ ràng điều này không làm việc như nó vốn có ...

Bất kỳ lời đề nghị?

Trả lời

6

thế nào về:

Insert into tableA (a1,a2,a3) 
(select "value2", b2, moreData from TableB where B1 = "English") 
+0

Không có vẻ để làm việc ... phàn nàn về cú pháp gần LỰA CHỌN. Nếu đây là cách tiếp cận tiêu chuẩn thì tôi phải có một lỗi đánh máy ở đâu đó (nhìn vào nó ngay bây giờ). Nhưng, một người bạn của tôi chỉ nói với tôi câu "Trong mệnh đề GIÁ TRỊ, bạn chỉ có thể chỉ định biến hoặc hằng số". Tôi cho rằng anh ta sai (phải có một cách) – Shaitan00

+0

Có lẽ đó là dấu ngoặc đơn xung quanh phần 'chọn ...'? Đặc biệt trong SQL Server họ không cần thiết ở đó và có thể bất hợp pháp quá. Tuy nhiên, không biết về các sản phẩm máy chủ khác. –

1

Nó có vẻ là nhiều cross-DBMS không có dấu ngoặc, như @Andriy M nhận xét:

insert into tableA (a1, a2, a3) 
select 'value2', b2, moreData from tableB where B1='English' 
Các vấn đề liên quan