2010-11-10 22 views
16

Vì mục đích minh họa, giả sử tôi có một bộ phim cơ sở dữ liệu (Tiêu đề, Giám đốc, Chi phí, Lợi nhuận).Chèn SQL với các giá trị được chọn và mã hóa cứng

Bây giờ tôi muốn chèn một hàng mới vào bảng Phim dựa trên một đạo diễn được tìm thấy trong bảng khác và sau đó là các giá trị được mã hóa cứng.

INSERT INTO Movies 
SELECT name 
    FROM Directors 
WHERE name = 'Lucas'; 

là làm thế nào tôi hiểu được chọn chèn làm việc nhưng những gì nếu tôi muốn sử dụng chọn cũng như vượt qua giá trị trong cứng mã hoá. Vì vậy, về mặt lý thuyết điều gì đó như thế này:

INSERT INTO Movies 
VALUES(Star Wars,(SELECT name 
        FROM Directors 
        WHERE name='Lucas'), 50000, 1000000); 

Điều này có thể?

+0

nếu bạn phải chọn tên [lucas] từ bảng giám đốc thì sẽ không đơn giản nếu chúng tôi trực tiếp sử dụng lucas thay vì chọn từ bảng khác? – KoolKabin

+0

@Kool, tôi cho rằng đó chỉ là một ví dụ mặc dù, thành thật mà nói, tôi không chắc chắn về hành vi này nếu đạo diễn _has_ không có Lucas (lỗi hoặc chèn không có hàng). – paxdiablo

+0

@paxdiablo, chèn các hàng số không – Phil

Trả lời

19
INSERT INTO Movies (Title, Director, Cost, Profits) 
SELECT 'Star Wars', name, 50000, 1000000 
FROM Directors WHERE name = 'Lucas' 
+4

sẽ còn tốt hơn nếu bao gồm cả tên trường của bảng phim quá – KoolKabin

+0

@KoolKabin Đúng, nhưng câu hỏi chưa được đưa ra với chi tiết như vậy – Phil

+0

có thể bạn nên xem kỹ hơn :-) – paxdiablo

6

Bởi vì bạn có thể chỉ định các giá trị mã hóa cứng vào báo cáo kết select, nó có thể là sạch để sử dụng:

insert into movies (title, director, cost, profits) 
    select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas'; 
4

Vâng, đây là có thể. Cú pháp SELECT của người dùng INSERT .. Xem reference để biết thêm chi tiết. Các giá trị được mã hóa cứng phải nằm trong truy vấn SELECT của bạn chứ không phải bên trong VALUES. Ví dụ.

INSERT INTO Movies 
SELECT 'Star Wars', name, 50000, 1000000 
FROM Directors 
WHERE name = 'Lucas'; 
0

bạn có cơ sở dữ liệu làm Phim (Tiêu đề, Giám đốc, Chi phí, Lợi nhuận). nếu u muốn nhập các giá trị trong các bảng tương ứng thì trước tiên hãy chọn bảng và sau đó chèn các giá trị vào các bảng đó.

Các vấn đề liên quan