2012-10-29 73 views
6

Tôi muốn chèn một số giá trị vào một bảng (mục1) từ một bảng (item2) và ngày không nằm trong bảng item2 đó.Gỡ lỗi Sql chèn vào câu lệnh bằng cách sử dụng câu lệnh chọn

Làm cách nào để viết câu lệnh SQL vào câu lệnh bằng câu lệnh chọn để đạt được điều đó?

ví dụ:

INSERT into item1(date, name, qty) 
values(datevalue, select col1, col2 from item2); 

này không hoạt động. Tôi nên làm gì để sửa nó?

insert into daily_stock(date, product_id, name, weight, qty, free_issues, sales_price, 
         purchased_price, category, last_purchased_date) 

    select 
     **'"+today+"'**, 
     productId, name, weight, newQty, freeIssues, NewSalesPrice, 
     NewPurchasePrice, category, datePurchased 
    from product 

Tôi đang sử dụng java và hôm nay là biến chuỗi, dữ liệu vẫn chưa chèn, có vấn đề gì?

+0

http://stackoverflow.com/questions/224732/sql-update-from-one-table-to-another-based-on-a-id-match –

Trả lời

7

bạn gần như có: chỉ cần sử dụng các biến thể SELECT cho INSERT instread của VALUES, và bao gồm các dữ liệu của bạn có như một hằng số:

insert into item1(date,name,qty) 
select <datevalue>, col1, col2 from item2; 

Nếu ngày của bạn đến từ bảng khác, bạn có thể làm điều này:

insert into item1(date,name,qty) 
select d.dcol1, i2.col1, i2.col2 
from item2 i2 inner join table_containing_date_col d 
on <some join criteria> 

EDIT: bạn phải đảm bảo rằng các kiểu dữ liệu phù hợp với ví dụ của bạn phải được phân tách đến một ngày nếu bạn là savign nó vào một lĩnh vực ngày (mà bạn hy vọng!). Bạn không cho biết chi tiết của cơ sở dữ liệu của bạn, nhưng nó sẽ là một cái gì đó như thế này cho SQL Server

cast('your date in yyyymmdd format' as datetime) 

(yyyymmdd luôn luôn làm việc vì nó là định dạng ISO dễ nhận biết)

hoặc tốt hơn vẫn CONVERT

Đối MySql bạn có STR_TO_DATE, cho Oracle TO_DATE etc.etc.

+0

buồn cười ... tôi chưa bao giờ * bao giờ hết * mã từ khóa 'inner', vì nó là kiểu nối mặc định trong mọi cơ sở dữ liệu và mọi người đều biết điều đó. – Bohemian

1

sử dụng INSERT INTO...SELECT tuyên bố

INSERT INTO item1 (date, name, qty) 
SELECT 'value here' as datevalue, col1, col2 
FROM item2 
0

Trong sự vắng mặt của một SQL server/loại cụ thể mà bạn đang sử dụng, trong T-SQL này có thể được thực hiện như sau:

INSERT INTO Table1 
SELECT '29/01/2012', T2.Column1, T2.Column2 FROM Table2 T2 
0

Bạn đang gần.

INSERT into ITEM1 (date, name, qty) 
values (datevalue, (SELECT col1, col2 FROM item2)); 
Các vấn đề liên quan