2

INSERT 查询是否可以减去您输入的 2 个值以创建第三个值,然后可以将其插入到表中 - 如果这有意义...

例如

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

您可以创建减去值的函数并在插入中使用此函数。这是做这些事情的正确方法:

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

使用“INSERT INTO”可以做到这一点:

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

这是 SQL Authority 的链接,其中包含更多 INSERT INTO 示例

于 2013-01-08T13:41:15.483 回答
0

另一种方法是向表中添加触发器,在插入数据时,第三列将根据前两列的差异进行更新。

于 2013-01-08T13:38:32.283 回答