如何将数据插入到特定列中,而其他列中不包含 NULL?

问题描述 投票:0回答:8

我有一个表(“table1”),有 3 列,分别称为 col1、col2 和 col3(每个列都是 VARCHAR),有 4 个值,如下所示:

col1   col2   col3
datA1  datB1  datC1
datA2  

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

INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');

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

col1   col2   col3
datA1  datB1  datC1
datA2
NULL   datB2  datC2

我真正需要的是用新值填充“col1”列中以值“datA2”开头的行,并得到如下表:

col1   col2   col3
datA1  datB1  datC1
datA2  datB2  datC2

该表有 3 列,每列响应特定类型的值(例如:名称、颜色、大小)。我需要的只是能够随时在特定列中添加新值,并且如果之前有空闲单元格,则它们不会为 Null 和新行。

sql postgresql insert
8个回答
5
投票
UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;

这可能符合您的目的。


1
投票

如果要将数据添加到现有行,则必须使用

UPDATE
语句。例如这样:

UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'

而且,问题的根源似乎是糟糕的数据库设计,但此查询只是为了向您展示如何将数据添加到现有行。


1
投票

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

1)

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

2)

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

3)

ELSE
只需添加一个新行,其中所有
NULL
位于该行的其他单元格中。

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

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


0
投票

给定一个表结构,有两个数据行:

key         value
--------------------
team        accounts
manager     jeff

每次想要更改值时,都需要检查它是否已经存在(用于更新)或不存在(用于插入)。因此,要更改

manager
属性的值:

if exists(select * from keyValues where key = 'manager')
    update keyValues set value = 'mike' where key = 'manager'
else
    insert into keyValues ('manager', 'mike')

0
投票

假设你有桌子
CLIENT_MASTER

客户编号
C00001 伊万
C00002 希曼舒

现在添加一个新列 City

ALTER table CLIENT_MASTER  
ADD( City varchar(10));

现在,如果您想在现有行中添加值,您可以使用 UPDATE 命令。
例如

UPDATE CLIENT_MASTER  
SET City='Delhi'  
WHERE ClientNo='C00001';

更新后的表格是
客户无姓名城市
C00001 伊万德里
C00002 希曼舒 NULL


0
投票

使用以下命令:

更新银行业务 设定工资=50000 其中 id = 101;

从银行选择*;


-1
投票

使用这个:

INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2')
WHERE col1 = datA2;

-3
投票

使用这个,如果值

null
则插入空值。

$cal1=$cal1 ? "data5" : '';
$cal2=$cal2 ? "data6" : '';
INSERT INTO table1 (col2, col3)
VALUES ("'.$cal1.'", "'.$cal2.'");
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.