我正在将数据库从 MySQL 切换到 Postgres SQL。在 MySQL 中有效的选择查询在 Postgres 中也有效,但类似的删除查询则不然。
我有两个数据表,其中列出了某些备份文件的位置。现有数据 (ed) 和新数据 (nd)。此语法将挑选出现有数据,这些数据可能说明文件在现有数据表中的位置,将其与相同的文件名和路径进行匹配,但没有关于它在新数据中的位置的信息:
SELECT ed.id, ed.file_name, ed.cd_name, ed.path, nd.cd_name
FROM tv_episodes AS ed
LEFT OUTER JOIN data AS nd ON
ed.file_name = nd.file_name AND
ed.path = nd.path
WHERE ed.cd_name = 'MediaLibraryDrive' AND nd.cd_name IS NULL;
我希望使用以下语法运行删除查询:
DELETE ed
FROM tv_episodes AS ed
LEFT OUTER JOIN data AS nd ON
ed.file_name = nd.file_name AND
ed.path = nd.path
WHERE ed.cd_name = 'MediaLibraryDrive' AND nd.cd_name IS NULL;
我努力了DELETE ed
and DELETE ed.*
两者都渲染syntax error at or near "ed"
。如果我尝试不使用别名,则会出现类似的错误ed
。如果我尝试
DELETE FROM tv_episodes AS ed
LEFT JOIN data AS nd.....
Postgres 发回syntax error at or near "LEFT"
.
我很困惑,找不到太多关于使用特定于 psql 的联接的删除查询的信息。