如何在其他列中将数据插入到没有NULL的特定列中?

Ars*_*nii 9 sql postgresql insert

我有一个表("table1")有3列,名为col1,col2和col3(每个都是VARCHAR),有4个值,如下所示:

col1   col2   col3
datA1  datB1  datC1
datA2  
Run Code Online (Sandbox Code Playgroud)

我需要能够随时将数据添加到任何不影响其他列的列中.互联网上非常流行的代码是(例如,我们只需要将数据添加到列col2和col3):

INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');
Run Code Online (Sandbox Code Playgroud)

但它添加了新行,如下所示:

col1   col2   col3
datA1  datB1  datC1
datA2
NULL   datB2  datC2
Run Code Online (Sandbox Code Playgroud)

我真正需要的是用新值填充从"col1"列开始的值"datA2"的行,并得到如下表格:

col1   col2   col3
datA1  datB1  datC1
datA2  datB2  datC2
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我,我将非常感激!谢谢.Arsenii.


更新:该表有3列,每列响应特定类型的值(例如:名称,颜色,大小).我需要的是可以在特定列中随时添加新值,如果之前有一个空闲单元格,则可以不使用Null和新行.

小智 5

UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;
Run Code Online (Sandbox Code Playgroud)

这可能有助于您的目的。


Ars*_*nii 1

我找到了解决方案(一系列逻辑运算):

1)CHECK如果有一个单元格(在目标列中)的值为""NULL

2)IF它有其中一个,然后重写第一个,并将该行中其他单元格的值保留在其位置(假设我们使用UPDATE))))。

3)ELSE只需添加一个新行,其中所有NULLs 都在该行的另一个单元格中。

如果我们想同时将一些值添加到各个列中,我们可以为所有这些值准备查询,然后同时执行它们(抱歉同义反复)。

如果我们需要在一个查询中的同一列中添加一些值,我们可以使用循环来准备它(重复第 1 段和第 2 段(或者,可选地,第 3 段)。