我有一个表(“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
如果有人可以帮助我,我将非常感激! 谢谢。 Arsenii。
更新: 该表有3列,每列响应特定类型的值(例如:名称,颜色,大小)。我需要的是可以在特定列中随时添加新值,并且如果之前有一个空闲单元格,则可以不使用Null和新行。
答案 0 :(得分:1)
如果要将数据添加到现有行,则必须使用UPDATE
语句。像这样举例如:
UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'
此外,您的问题根源似乎是数据库设计不佳,但此查询只是为了向您展示如何将数据添加到现有行。
答案 1 :(得分:1)
我找到了解决方案(一系列逻辑操作):
1)CHECK
如果某个单元格(在目标列中)的值为""
或NULL
。
2)IF
它有一个然后重写第一个保持该行中其他单元格的值在他们的位置(可能我们使用UPDATE
))))。
3)ELSE
只需在行的另一个单元格中添加一个包含所有NULL
的新行。
如果我们想要同时在各个列中添加一些值,我们可以为所有这些列准备查询,然后同时执行它们(对于重言式抱歉)。
如果我们需要在一个查询中向同一列添加一些值,我们可以使用循环(重复第1段和第2段(或者,可选,3))来准备它。
答案 2 :(得分:1)
UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;
这可能符合您的目的:)
答案 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')
答案 4 :(得分:0)
假设您有表格
CLIENT_MASTER
客户编号名称
C00001伊万
C00002 Himanshu
现在您添加一个新列City
ALTER table CLIENT_MASTER
ADD( City varchar(10));
现在,如果要在现有行中添加值,则可以使用UPDATE命令。
例如
UPDATE CLIENT_MASTER
SET City='Delhi'
WHERE ClientNo='C00001';
更新后的表格是
客户没有名字的城市
C00001伊万·德里
C00002 Himanshu NULL
答案 5 :(得分:-1)
使用此:
INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2')
WHERE col1 = datA2;
答案 6 :(得分:-3)
使用此值,如果值为null
,则插入空值。
$cal1=$cal1 ? "data5" : '';
$cal2=$cal2 ? "data6" : '';
INSERT INTO table1 (col2, col3)
VALUES ("'.$cal1.'", "'.$cal2.'");