2012-10-29 132 views
6

我想從表(item2)的一個表(item1)和不在該item2表中的日期中插入一些值。使用select語句將Sql插入到語句中

如何使用select語句將SQL插入寫入語句來實現該目標?

如:

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

這是行不通的。我該怎麼做才能解決它?

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 

我使用java,今天是一個字符串變量,仍然沒有數據插入,什麼是錯的?

+0

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

回答

7

你幾乎沒有:只是使用SELECT變化爲INSERT instread的VALUES,還有包括你的數據爲常量:

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

如果你的約會對象是來自另一個表,你可以這樣做:

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> 

編輯:,你必須確保數據類型,即符合您必須是可解析爲一個日期,如果你是savign它日期字段(你希望!)。你不給你的數據庫的細節,但它會是這樣的SQL Server

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

yyyymmdd總是工作,因爲它是可識別的ISO格式)

或更好CONVERT

對於MySql你有STR_TO_DATE,對於Oracle TO_DATE etc.etc。

+0

搞笑...我從來沒有過* *編碼關鍵字'inner',因爲它是每個數據庫中的默認連接類型,每個人都知道。 – Bohemian

1

使用INSERT INTO...SELECT聲明

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

在沒有您使用的是特定SQL Server /類型,在T-SQL中,可以做到像這樣:

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

你接近。

INSERT into ITEM1 (date, name, qty) 
values (datevalue, (SELECT col1, col2 FROM item2));