8

テーブル (item2) からテーブル (item1) にいくつかの値を挿入し、その item2 テーブルにない日付を挿入したいと考えています。

それを達成するために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>

編集:データ型が一致していることを確認する必要があります。つまり、日付フィールドに精通している場合は、日付に解析可能である必要があります(できればそうです!)。データベースの詳細は指定しませんが、SQLServerの場合は次のようになります。

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

yyyymmdd認識可能なISO形式であるため常に機能します)

またはそれでも変換

MySqlの場合はSTR_TO_DATEOracleTO_DATEの場合などがあります。

于 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 に答える