Mic*_*ver 2 postgresql delete-row
我有一个像这样定义的表:
CREATE TABLE contracts (
ContractID TEXT DEFAULT NULL,
ContractName TEXT DEFAULT NULL,
ContractEndDate TIMESTAMP WITHOUT TIME ZONE,
ContractPOC TEXT DEFAULT NULL
);
Run Code Online (Sandbox Code Playgroud)
在这个表中,一个 ContractID 可能有多个记录,对于每个 ContractID,我想删除所有记录,除了具有最新 ContractEndDate 的记录。我知道如何在 MySQL 中使用:
DELETE contracts
FROM contracts
INNER JOIN (
SELECT
ContractID,
ContractName,
max(ContractEndDate) as lastDate,
ContractPOC
FROM contracts
GROUP BY EmployeeID
HAVING COUNT(*) > 0) Duplicate on Duplicate.ContractID = contracts.ContractID
WHERE contracts.ContractEndDate < Duplicate.lastDate;
Run Code Online (Sandbox Code Playgroud)
但是我需要帮助才能在 PostgreSQL 中工作。
你可以用这个
delete
from
contracts c
using (SELECT
ContractID,
max(ContractEndDate) as lastDate
FROM
contracts
GROUP BY
ContractID) d
where
d.ContractID = c.ContractID
and c.ContractEndDate < d.lastDate;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |