2

INSERT クエリで、入力した 2 つの値を減算して、テーブルに挿入できる 3 番目の値を作成することは可能ですか? それが理にかなっていれば...

例えば

INSERT INTO table1 (column1, column2, column3)
VALUES ('50', '25', column1 - column2)
4

5 に答える 5

2
INSERT INTO table1 (column1, column2, column3)
(select ('50', '25', column1 - column2) from table1 where conditions)

これはサンプル クエリです。それが役に立てば幸い!

于 2013-01-08T13:05:02.343 に答える
2

複雑:

INSERT INTO table1 (column1,column2,column3)
select column1,column2,column1-column2
from
    (select 50 as column1,
            25 as column2
    ) t

同じ句から他の列を参照できないためSELECT、サブクエリとして実行する必要があります。intまた、文字列ではなくリテラルを使用するように切り替えました。そうしないと、減算を頭の中で意味を成すことができないからです。

Table Value Constructorを使用して行うこともできます。

INSERT INTO table1 (column1,column2,column3)
select column1,column2,column1-column2
from
    ( VALUES (50, 25)
    ) AS t (column1, column2);

ただし、私のコメントに示されているように、関係が常に保持される場合は、table1 を次のように作成します。

CREATE TABLE table1 (
    column1 int not null,
    column2 int not null,
    column3 as column1 - column2
    --More columns
)

そうすれば、column3値は常に正しいからです。

于 2013-01-08T13:22:21.217 に答える
1

「INSERTINTO」を使用すると、次のようになります。

INSERT INTO Table1Name (column1, column2, column3,)
(select 'X', 'Y', X - Y as Z)

INSERTINTOのその他の例を含むSQLAuthorityへのリンクは次のとおりです。

于 2013-01-08T13:41:15.483 に答える
1

値を減算する関数を作成し、この関数を挿入で使用できます。これは、そのようなことを行う正しい方法です:

INSERT INTO table1 (column1, column2, column3)
 (select ('50', '25', your_function() ) from table1 where conditions)
/
于 2013-01-08T13:35:49.640 に答える
0

もう 1 つの方法は、テーブルにトリガーを追加することです。この場合、データの挿入時に、3 番目の列が最初の 2 列の差で更新されます。

于 2013-01-08T13:38:32.283 に答える