如何在PostgreSQL数据库中删除特定列值?

20

我有一张表,表名为employee。我使用了以下查询语句。

delete department,name,bloodgroup from employee where employeeid=2;

但是我无法单独删除此记录。它显示错误。我不想使用更新语句。


它不能是标准的 SQL。通常,Delete 命令无法做到这一点。 - Baatar
2
为什么你不想使用“update”语句?这是将特定列值设置为空的唯一方法。 - user330315
正如其他人所指出的那样,使用SQL可以删除行,但无法删除值。相反,您可以(可能)将值更新为NULL或其他合理的值,例如零。 - Mike Sherrill 'Cat Recall'
4个回答

34

使用 SQL 中的 delete 命令无法删除单列的条目,只能删除整行。

您可以使用 update 命令来完成此操作:

update employee 
set department = null, name = null, bloodgroup = null
where employeeid=2;

1
或者,如果 OP 确实想要删除整条记录... DELETE employee WHERE employeeid = 2 - MatBailie
3
@Dems: DELETE FROM employee ... 可以翻译为:从员工表中删除记录的SQL语句。 - Mike Sherrill 'Cat Recall'
如果部门有一个非空约束条件,例如? - swiss_knight
2
如果设计不允许没有部门的记录,则无法将其设置为空。这就是为什么创建表设计的人会加入此限制的原因。 - juergen d
好的。如果您想将值替换为其默认值而不是将其设置为“null”,该怎么办?(假设您真的不知道它的默认值 - 或者,如果您无法以通用方式设置它,这对于任何数据类型都是通用的,那么您会怎么做才能知道它的默认值?一些特殊的数据类型,如数组,可能具有默认值,这可能对新手来说看起来很奇怪) - swiss_knight
1
@s.k:没有通用的默认值。也许你应该提出一个关于你的问题的具体问题,并附上一些示例数据。 - juergen d

3

除非删除NOT NULL约束,否则上述解决方案将无法工作。执行以下步骤:

ALTER TABLE employee;
ALTER COLUMN department DROP NOT NULL;

在此之后,您可以像上面那样更新表格

UPDATE employee SET department = null WHERE employeeid =2;

希望这个能有所帮助,谢谢!


0

我们无法在SQL中删除特定列的值,但可以对其进行更新。


-1
你可以使用这个命令从数据库中删除一个表的特定列的所有值。
UPDATE 'table_name' SET 'column_name' = NULL;
使用这个命令,你可以将一个列的所有值清空为null。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接