我的数据库中有一个表。表格的字段如下所述。
ID | NAME | QUALIFICATION
1 | ABC | Phd
2 | XYZ | MBA
3 | ADS | MBA
现在我的问题与更新QUALIFICATION记录有关。假设我更新了QUALIFICATION的记录,它应该将新值附加到现有值。
例如,我将更新id = 1的记录。现在我更新"资格" MCA
然后它应该将MCA
添加到现有记录Phd
,用逗号分隔。输出将如下所示。
ID | NAME | QUALIFICATION
1 | ABC | Phd,MCA
2 | XYZ | MBA
3 | ADS | MBA
何时"资格"如果为null,则更新不应在MCA之前添加逗号。
答案 0 :(得分:1)
多数数据库设计错误从不将数据存储为逗号分隔字符串,这将使未来的事情变得混乱。
您应该考虑将表格标准化,就像您的表格应该是student
- id primary key auto_incremented
- name
- other columns related to student
然后另一个表格为student_qualification
- id primary key auto_incremented
- id_student ( id from student table)
- qualification
因此,对于每个学生,您可以为此表添加尽可能多的资格,并且可以轻松添加/编辑/删除数据
稍后您可以使用简单的连接表轻松检索数据。
答案 1 :(得分:0)
愿你可以试试这个
update employee set qualification = qualification || ',MCA' where id = 1
以上内容适用于oracle
修改强>
然后你可以用它包含case语句
update employee set qualification = case when qualification is null then
'MCA' else qualification || ',MCA' end where id = 1
答案 2 :(得分:0)
首先,您必须选择Qualification列的现有值 你想要更新
使用
select qualification from tb_name where id = 1
使用上述查询,您将获得您的资格栏值
假设在
$qulification
现在使用
更新该行
update set tb_name set qualification = '".$qualification."."your new value" where id = 1
答案 3 :(得分:0)
您可以在SET子句中测试NULL,并使用连接来适当地格式化字符串。
update student
set qualification = concat(if (qualification is not null
, concat( qualification, ',')
, '' )
, 'MBA')
where id = 1;
这是一个working SQL Fiddle(它还演示了具有NULL限定的行为)。
我同意@Abhik对于此特定数据这是一个糟糕的设计,并且规范化是您提供的用例的更好方法但是,还有其他用例在做这种更新是完全有效的,所以问题值得一个正确的答案..