我想从表(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,今天是一个字符串变量,仍然没有数据插入,什么错了?
答案 0 :(得分:7)
你几乎就在那里:只使用SELECT
INSERT
VALUES
的{{1}}版本,并将数据作为常量包含在内:
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格式)
或更好的CONVERT
对于MySql,您有STR_TO_DATE,对于Oracle TO_DATE等等。
答案 1 :(得分:2)
使用INSERT INTO...SELECT
声明
INSERT INTO item1 (date, name, qty)
SELECT 'value here' as datevalue, col1, col2
FROM item2
答案 2 :(得分:0)
如果没有您使用的特定SQL服务器/类型,在T-SQL中可以这样做:
INSERT INTO Table1
SELECT '29/01/2012', T2.Column1, T2.Column2 FROM Table2 T2
答案 3 :(得分:0)
你很亲密。
INSERT into ITEM1 (date, name, qty)
values (datevalue, (SELECT col1, col2 FROM item2));