我有一个表(“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 和新行。
UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;
这可能符合您的目的。
如果要将数据添加到现有行,则必须使用
UPDATE
语句。例如这样:
UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'
而且,问题的根源似乎是糟糕的数据库设计,但此查询只是为了向您展示如何将数据添加到现有行。
我找到了解决方案(一系列逻辑运算):
1)
CHECK
如果有一个单元格(在目标列中)其值为 ""
或 NULL
。
2)
IF
它有其中一个,然后重写第一个,并将该行中其他单元格的值保留在其位置(假设我们使用UPDATE
))))。
3)
ELSE
只需添加一个新行,其中所有 NULL
位于该行的其他单元格中。
如果我们想同时将一些值添加到各个列中,我们可以为所有这些值准备查询,然后同时执行它们(抱歉是同义反复)。
如果我们需要在一个查询中的同一列中添加一些值,我们可以使用循环来准备它(重复第 1 段和第 2 段(或可选的第 3 段)。
给定一个表结构,有两个数据行:
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')
假设你有桌子
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
使用以下命令:
更新银行业务 设定工资=50000 其中 id = 101;
从银行选择*;
使用这个:
INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2')
WHERE col1 = datA2;
使用这个,如果值
null
则插入空值。
$cal1=$cal1 ? "data5" : '';
$cal2=$cal2 ? "data6" : '';
INSERT INTO table1 (col2, col3)
VALUES ("'.$cal1.'", "'.$cal2.'");