PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

ИЗТРИВАНЕ ОТ ... съобщаване на синтактична грешка при или близо до .

Вашето запитване няма никакъв смисъл.

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

Ще забележите, че съм поставил в двойни кавички „потребител“. Това е така, защото това е ключова дума и всъщност не трябва да се използва за имена на таблици или други дефинирани от потребителя идентификатори. Двойното му поставяне в кавички го принуждава да бъде интерпретирано като идентификатор, а не като ключова дума.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се вмъкне:ГРЕШКА:стойността на масива трябва да започва с { или информация за измерения

  2. Как Extract() работи в PostgreSQL

  3. Как да вмъкна PostGIS GEOMETRY Point в Sequelize ORM?

  4. Vertx JDBC client queryWithParams - как да добавя списък?

  5. Как да генерирате 52 седмици от текущата дата с помощта на Postgresql