sql >> Databasteknik >  >> RDS >> PostgreSQL

DELETE FROM ... rapporterar syntaxfel vid eller nära .

Din fråga ger ingen mening.

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

Var var user komma från? Det hänvisas inte till i frågan. Är det en kolumn i database_userprofile ? Om så är fallet kan du inte skriva user.username (om det inte är en sammansatt typ, i så fall måste du skriva (user).username att berätta för analyseraren att; men jag tvivlar på att det är en sammansatt typ).

Den omedelbara orsaken är att user är ett reserverat ord . Du kan inte använda det namnet utan att citera det:

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

... dock är den här frågan fortfarande meningslös, den ger bara ett annat fel:

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

Min vilda gissning är att du försöker göra en radering över en join. Jag antar att du har tabeller som:

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

och du försöker ta bort med ett villkor över den andra tabellen.

I så fall kan du inte skriv bara user.username . Du måste använda:

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

Du kommer att märka att jag har dubbelciterat "användare". Det beror på att det är ett nyckelord och egentligen inte bör användas för tabellnamn eller andra användardefinierade identifierare. Dubbelcitering tvingar den att tolkas som en identifierare, inte ett nyckelord.



  1. Vill du hämta data från databasen baserat på val av rullgardinslista med php

  2. Hur man övervakar HAProxy Metrics med ClusterControl

  3. Förhindra SQL-injektion i C

  4. Hur kan jag skapa ett infognings-/uppdateringsformulär för flera tabeller i Oracle Apex 5.1.4