【问题标题】:How to create a new column containing the result of 3 already created columns in SQL? [duplicate]如何在 SQL 中创建一个包含 3 个已创建列的结果的新列? [复制]
【发布时间】:2021-08-15 18:09:03
【问题描述】:

我正在尝试创建一个新列,其结果是添加了其他三个已创建的列。我希望 TotalActiveMinutes 列等于表中每一行的 VeryActiveMinutes、FairlyActiveMinutes、LightlyActiveMinutes 和 SedentaryActiveMinutes 列的总和。我已经创建了该列,但不知道如何将 SELECT 查询的结果输入到 TotalActiveMinutes 列中。

ALTER TABLE all_activity
ADD COLUMN TotalActiveMinutes INT;

SELECT (VeryActiveMinutes + FairlyActiveMinutes + LightlyActiveMinutes + SedentaryMinutes) AS TotalMinutes
FROM all_activity;

我已经尝试了下面的代码,它运行没有错误,但没有任何结果。例如,从 TotalActiveMinutes 列中选择 * 后,每个空格仍然表示“null”。

INSERT INTO all_activity(TotalActiveMinutes)
    SELECT (VeryActiveMinutes + FairlyActiveMinutes + LightlyActiveMinutes + SedentaryMinutes)
    FROM all_activity;

SELECT TotalActiveMinutes FROM all_activity;

【问题讨论】:

  • 我认为你需要一个更新语句而不是插入。
  • 非常感谢,@ReinisVerbelis!我是 SQL 新手,正在努力学习。我刚试过,它奏效了:UPDATE all_activity SET TotalActiveMinutes = (VeryActiveMinutes + FairlyActiveMinutes + LightlyActiveMinutes + SedentaryMinutes);
  • insert 添加行;要更改列,请使用 update

标签: mysql sql calculated-columns


【解决方案1】:

使用生成的列:

alter table all_activity add column TotalActiveMinutes int as
     (VeryActiveMinutes + FairlyActiveMinutes + LightlyActiveMinutes + SedentaryMinutes);

【讨论】:

  • 谢谢!正如另一位用户评论的那样,我使用了更新,并且效果也很好。下次我遇到这个任务时我会试试这个,所以这是我方便的另一个工具!
猜你喜欢
  • 2020-05-28
  • 2015-10-02
  • 2023-04-06
  • 1970-01-01
  • 2012-09-04
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
相关资源
最近更新 更多