8

我想从表(item2)和不在该 item2 表中的日期向表(item1)插入一些值。

如何使用 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,今天是一个字符串变量,仍然没有插入数据,怎么了?

4

4 回答 4

7

您快到了:只需使用instread的SELECT变体,并将您的数据作为常量包含在其中:INSERTVALUES

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>

编辑:您必须确保数据类型匹配,即如果您将其保存到日期字段(希望如此!),您必须可以解析为日期。您没有提供数据库的详细信息,但对于 SQL Server 来说将是这样的

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

yyyymmdd始终有效,因为它是可识别的 ISO 格式)

或者更好的是转换

对于 MySql 你有STR_TO_DATE,对于 Oracle TO_DATE etc.etc。

于 2012-10-29T11:28:17.433 回答
2

使用INSERT INTO...SELECT声明

INSERT INTO item1 (date, name, qty) 
SELECT 'value here' as datevalue, col1, col2 
FROM   item2
于 2012-10-29T11:28:22.040 回答
0

在没有您使用的特定 SQL 服务器/类型的情况下,在 T-SQL 中可以这样做:

INSERT INTO Table1
SELECT '29/01/2012', T2.Column1, T2.Column2 FROM Table2 T2
于 2012-10-29T11:28:22.570 回答
0

你很亲密。

INSERT into ITEM1 (date, name, qty) 
values (datevalue, (SELECT col1, col2 FROM item2));
于 2012-10-29T11:29:24.113 回答