我目前正在尝试使用 PL/pgSQL,想知道是否有更优雅的方法来做这样的事情:
select c.data into data from doc c where c.doc_id = id and c.group_cur > group_cur order by c.id desc limit 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
select c.data into data from doc c where c.doc_id = id and c.global_cur > global_cur order by c.id desc limit 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
Run Code Online (Sandbox Code Playgroud) 我最近问了关于 MySQL 的同样问题,它已经迁移到 Postgres。 老问题。
把它们加起来:
我有一个带有 id(类型 UUID)、时间戳和一些文本(row3)的表。如何为 row3 的每个不同值每小时仅保留一个条目?
我试过的是这样的:
INSERT INTO log_table
SELECT * FROM table1
WHERE id IN (
SELECT DISTINCT ON(id) id
FROM table1
GROUP BY row3, EXTRACT(HOUR FROM "time"), id
);
TRUNCATE table1;
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这会插入 table1 中的每一行。