sql >> Database >  >> RDS >> PostgreSQL

VERWIJDEREN UIT ... rapportage syntaxisfout op of nabij .

Je vraag slaat nergens op.

DELETE FROM database_userprofile WHERE user.username = 'some';
                                       ^^^^

Waar zou user Komt van? Er wordt niet naar verwezen in de query. Is het een kolom van database_userprofile ? Als dit het geval is, kunt u user.username niet schrijven (tenzij het een samengesteld type is, in welk geval u (user).username zou moeten schrijven om de parser dat te vertellen; maar ik betwijfel of het een samengesteld type is).

De directe oorzaak is dat user is een gereserveerd woord . Je kunt die naam niet gebruiken zonder hem te citeren:

DELETE FROM database_userprofile WHERE "user".username = 'some';

... deze zoekopdracht heeft echter nog steeds geen zin, hij geeft alleen een andere foutmelding:

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...

Mijn wilde gok is dat je probeert te verwijderen via een join. Ik neem aan dat je tabellen hebt als:

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
);

en je probeert te verwijderen met een voorwaarde in de andere tabel.

Zo ja, kunt u niet schrijf gewoon user.username . Je moet gebruiken:

DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';

U zult merken dat ik "gebruiker" dubbel heb geciteerd. Dat komt omdat het een sleutelwoord is en niet echt zou moeten worden gebruikt voor tabelnamen of andere door de gebruiker gedefinieerde identifiers. Door het dubbel te citeren, wordt het geïnterpreteerd als een identificatie en niet als een trefwoord.



  1. MySQL controleren of een IP-adres binnen bereik is?

  2. Hoe verbind ik een C# Windows mobile 6.5-app met een Postgres-database?

  3. Database-ontwerp:registreren en verifiëren

  4. FIND_IN_SET() alternatief?