Database 从…中删除。。。“处或附近报告语法错误。”&引用;
我试图从我的数据库中删除一个数据,但是,当我编写命令时,我总是发现有一些语法错误,你能告诉我错误在哪里吗 以下是我尝试过的命令:Database 从…中删除。。。“处或附近报告语法错误。”&引用;,database,postgresql,row,delete-row,sql-delete,Database,Postgresql,Row,Delete Row,Sql Delete,我试图从我的数据库中删除一个数据,但是,当我编写命令时,我总是发现有一些语法错误,你能告诉我错误在哪里吗 以下是我尝试过的命令: DELETE FROM database_userprofile WHERE user.username = 'some'; ERROR: syntax error at or near "." LINE 1: DELETE FROM database_userprofile WHERE user.username = 'some'... DELETE FROM
DELETE FROM database_userprofile WHERE user.username = 'some';
ERROR: syntax error at or near "."
LINE 1: DELETE FROM database_userprofile WHERE user.username = 'some'...
DELETE FROM database_userprofile USING database_user WHERE user.username="some";
ERROR: syntax error at or near "."
LINE 1: ... database_userprofile USING database_user WHERE user.username=...
希望您能帮助我由于文档原因,PostgreSQL 9.1中删除的语法是:
[ WITH [ RECURSIVE ] with_query [, ...] ]
DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ]
[ USING using_list ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
因此,您需要在DELETE命令后指定“table_name”,而不是“database_name”。只有登录到数据库后,才能删除数据 你得到了
错误:“.”处或附近出现语法错误
因为在WHERE部分可以指定目标表或usinglist中的表。
您的查询没有任何意义
DELETE FROM database_userprofile WHERE user.username = 'some';
^^^^
user
来自哪里?查询中未引用它。它是数据库_userprofile
的一列吗?如果是这样,您就不能编写user.username
(除非它是复合类型,在这种情况下,您必须编写(user.username>)来告诉解析器这一点;但我怀疑它是复合类型)
直接原因是。如果不引用该名称,则不能使用该名称:
DELETE FROM database_userprofile WHERE "user".username = 'some';
。。。但是,此查询仍然没有意义,它只会给出一个不同的错误:
regress=> DELETE FROM database_userprofile WHERE "user".username = 'some';
ERROR: missing FROM-clause entry for table "user"
LINE 1: DELETE FROM database_userprofile WHERE "user".username = 'so...
我的猜测是,您正在尝试对联接执行删除操作。我假设您有如下表格:
CREATE TABLE "user" (
id serial primary key,
username text not null,
-- blah blah
);
CREATE TABLE database_userprofile (
user_id integer references "user"(id),
-- blah blah
);
您正试图在另一个表中使用一个条件进行删除
如果是这样的话,你不能只写user.username
。您必须使用:
DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';
你会注意到,我双引号“user”。这是因为它是一个关键字,不应该真正用于表名或其他用户定义的标识符。双引号强制将其作为标识符而不是关键字进行解释。将查询从Eclipse复制粘贴到pgadmin时,也可能会出现此错误。不知何故,可能会插入一个奇怪的符号。为避免此错误,请先将其粘贴到一个简单的文本编辑器(如记事本)中,然后从该编辑器中剪切并粘贴到pgadmin中。始终包括tour PostgreSQL版本和任何相关的表定义。解释你想要达到的目标,这样我们就不用猜测了。这次还是向上投票,因为您确实包含了完整、准确的命令文本和错误(谢谢!)。实际上,直接原因是user
是一个保留字。