使用 select 语句编写 Sql insert into 语句
Posted
技术标签:
【中文标题】使用 select 语句编写 Sql insert into 语句【英文标题】:Wrting Sql insert into statement using select statement 【发布时间】:2012-10-18 17:07:14 【问题描述】:我想从表 (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,今天是一个字符串变量,还是没有插入数据,怎么回事?
【问题讨论】:
***.com/questions/224732/… 【参考方案1】:你就快到了:只需使用INSERT
的VALUES
的SELECT
变体,并将你的数据作为常量包含在其中:
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 等。
【讨论】:
有趣...我从来没有曾经编码过关键字inner
,因为它是每个数据库中的默认连接类型,每个人都知道这一点。【参考方案2】:
使用INSERT INTO...SELECT
声明
INSERT INTO item1 (date, name, qty)
SELECT 'value here' as datevalue, col1, col2
FROM item2
【讨论】:
【参考方案3】:在没有您使用的特定 SQL 服务器/类型的情况下,在 T-SQL 中可以这样做:
INSERT INTO Table1
SELECT '29/01/2012', T2.Column1, T2.Column2 FROM Table2 T2
【讨论】:
【参考方案4】:你很接近。
INSERT into ITEM1 (date, name, qty)
values (datevalue, (SELECT col1, col2 FROM item2));
【讨论】:
以上是关于使用 select 语句编写 Sql insert into 语句的主要内容,如果未能解决你的问题,请参考以下文章
无效的SQL语句;预期的DELETE,INSERT,PROCEDURE,SELECT或UPDATE?