あなたの質問は意味がありません。
DELETE FROM database_userprofile WHERE user.username = 'some';
^^^^
userはどこにありますか から来る?クエリでは参照されていません。 database_userprofileの列ですか ?その場合、user.usernameを記述できません。 (複合型でない限り、その場合は(user).usernameを記述する必要があります。 パーサーにそのことを伝えるため。しかし、それが複合型だとは思えません。
直接の原因は、userです。 予約語です
。引用せずにその名前を使用することはできません:
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';
「ユーザー」を二重に引用していることに気付くでしょう。これはキーワードであり、テーブル名やその他のユーザー定義の識別子には実際には使用しないでください。二重引用符で囲むと、キーワードではなく識別子として解釈されます。