如何在表中创建列并在SQLite中使用select查询填充

如何在表中创建列并在SQLite中使用select查询填充,sql,sqlite,Sql,Sqlite,我试图在表中创建新列,并使用其他表的计算结果填充它 示例代码如下所示 select a.Segment || b.Segment || c.Segment as Comb_Segment from table_a a inner join table_b b on a.Id = b.Id inner join table_c c on a.Id = c.Id 这是我的数据和预期输出 表a: +--------+----+---------+ | Period

我试图在表中创建新列,并使用其他表的计算结果填充它

示例代码如下所示

select 
    a.Segment || b.Segment || c.Segment as Comb_Segment
from
    table_a a
inner join
    table_b b on a.Id = b.Id
inner join
    table_c c on a.Id = c.Id
这是我的数据和预期输出

表a:

+--------+----+---------+
| Period | Id | Segment |
+--------+----+---------+
|     12 |  1 | X       |
+--------+----+---------+
表b

+--------+----+---------+
| Period | Id | Segment |
+--------+----+---------+
|     11 |  1 | C       |
+--------+----+---------+
表c

+--------+----+---------+
| Period | Id | Segment |
+--------+----+---------+
|     10 |  1 | A       |
+--------+----+---------+
预期输出表a

+--------+----+---------+--------------+
| Period | Id | Segment | Comb_Segment |
+--------+----+---------+--------------+
|     12 |  1 | X       | XCA          |
+--------+----+---------+--------------+
white在执行此查询时,我还想在“table_a”中创建一个名为Comb_段的列,并用这个“Comb_段”填充它


有什么想法吗

使用
group\u concat
尝试以下操作,下面是示例

输出:

| Period | Id  | Segment | comb_segment |
| ------ | --- | ------- | ------------ |
| 12     | 1   | X       | ACX          |

请使用
组\u concat
尝试以下操作,以下是示例

输出:

| Period | Id  | Segment | comb_segment |
| ------ | --- | ------- | ------------ |
| 12     | 1   | X       | ACX          |

您可以使用以下选项添加新列:

ALTER TABLE table_a ADD Comb_Segment TEXT;
然后像这样更新它:

UPDATE table_a
SET Comb_Segment = (
  SELECT a.Segment || b.Segment || c.Segment   
  FROM table_a a 
  INNER JOIN table_b b ON b.Id = a.Id
  INNER JOIN table_c c ON c.Id = a.Id
  WHERE a.Id = table_a.Id
);
请参阅。

或更简单:

UPDATE table_a
SET Comb_Segment = 
  Segment ||
  (SELECT b.Segment FROM table_b b WHERE b.Id = table_a.Id) ||
  (SELECT c.Segment FROM table_c c WHERE c.Id = table_a.Id);
请参阅。

结果:

| Period | Id  | Segment | Comb_Segment |
| ------ | --- | ------- | ------------ |
| 12     | 1   | X       | XCA          |

您可以使用以下选项添加新列:

ALTER TABLE table_a ADD Comb_Segment TEXT;
然后像这样更新它:

UPDATE table_a
SET Comb_Segment = (
  SELECT a.Segment || b.Segment || c.Segment   
  FROM table_a a 
  INNER JOIN table_b b ON b.Id = a.Id
  INNER JOIN table_c c ON c.Id = a.Id
  WHERE a.Id = table_a.Id
);
请参阅。

或更简单:

UPDATE table_a
SET Comb_Segment = 
  Segment ||
  (SELECT b.Segment FROM table_b b WHERE b.Id = table_a.Id) ||
  (SELECT c.Segment FROM table_c c WHERE c.Id = table_a.Id);
请参阅。

结果:

| Period | Id  | Segment | Comb_Segment |
| ------ | --- | ------- | ------------ |
| 12     | 1   | X       | XCA          |

你能提供你的样本数据和预期输出吗?ohh@zealous请编辑你的答案。(很抱歉,我们在聊天时与他解决了这个问题,但我认为他忘了编辑他的答案。)你已经接受了@forpas答案,所以这很好。你能提供你的样本数据和预期输出吗?ohh@zealous请编辑你的答案。(很抱歉,我们在聊天时与他解决了这个问题,但我认为他忘了编辑他的答案。)您已经接受了@forpas answer,所以这很好。但我还想将Comb_段作为一个新列保存到我的表_a中。这仍然不会创建新列。@Egeıkrıkıkı现在试试。我也提供了演示。我想我无法很好地解释自己。让我重新表述我的问题。假设在有了这个输出之后,我想创建一个新的列表“table_x”,我想在“table_x”上创建一个新列“comb_段”“我想把表a.comb_段写进表x.comb_段。你也能解释一下吗。@Egeıkrıkı这不是你上面问的问题。请创建一个新问题,我的答案是你问的问题的答案。请点击勾号接受它。谢谢这是我实际要求的。我说在执行此查询时,我还想在“table_a”中创建一个名为Comb_段的列,并用这个“Comb_段”填充它。"很抱歉,您的解决方案仍然无法在表a中创建新列。类似于ALTER table table a ADD column comb_Segment,但我也想将comb_Segment作为新列保存到我的表a中。这仍然无法创建新列。@Egeıkrıkı现在试试。我也为您提供了演示。我想我无法很好地解释我自己。让我来重新表述我的问题。假设在有了这个输出之后,我想创建一个新表“table_x”,我想在“table_x”上创建一个新列“comb_segment”“我想把表a.comb_段写进表x.comb_段。你也能解释一下吗。@Egeıkrıkı这不是你上面问的问题。请创建一个新问题,我的答案是你问的问题的答案。请点击勾号接受它。谢谢这是我实际要求的。我说“white执行此查询时,我还想在“table_a”中创建一个名为Comb_段的列,并用此“Comb_段”填充该列”。“很抱歉,您的解决方案仍然无法在table_a中创建新列。类似于ALTER table table_a添加列Comb_段