Postgresql SQL连接到最佳匹配行
我有一个wiki系统,其中有一个中心表,即文章,它在自己的表中有许多修订。每个修订都包含“创建时间”和“日期”列 我想更新文章,使其包含来自最新版本名称字段的非规范化字段sort_name 我可以发出什么样的SQL命令来用最新版本的名称字段填充每篇文章的sort_name字段Postgresql SQL连接到最佳匹配行,postgresql,denormalization,Postgresql,Denormalization,我有一个wiki系统,其中有一个中心表,即文章,它在自己的表中有许多修订。每个修订都包含“创建时间”和“日期”列 我想更新文章,使其包含来自最新版本名称字段的非规范化字段sort_name 我可以发出什么样的SQL命令来用最新版本的名称字段填充每篇文章的sort_name字段 值得一提的是,我使用的是PostgreSQL。不是100%确定PostgreSQL语法,因此您可能需要对其进行一些更改,但想法是: UPDATE Articles SET sort_name = (SELECT FIRST
值得一提的是,我使用的是PostgreSQL。不是100%确定PostgreSQL语法,因此您可能需要对其进行一些更改,但想法是:
UPDATE Articles
SET sort_name = (SELECT FIRST(name)
FROM Revisions
WHERE Revisions.id = Articles.id
ORDER BY created_at DESC)
并非100%确定PostgreSQL语法,因此您可能需要对此进行一些更改,但其想法是:
UPDATE Articles
SET sort_name = (SELECT FIRST(name)
FROM Revisions
WHERE Revisions.id = Articles.id
ORDER BY created_at DESC)
如果我理解正确,您希望加入最新版本。下面是一种优化的方法,可以选择最新的修订版本进行更新。如果这不是你想要的,请告诉我。它是为T-SQL编写的,因为我不熟悉PostgreSQL
UPDATE ARTICLES
SET SORT_NAME = lastHist.NAME
FROM ARTICLES AS t
--Join the the most recent history entries
INNER JOIN REVISION lastHis ON t.ID = lastHis.FK_ID
--limits to the last history in the WHERE statement
LEFT JOIN REVISION his2 on lastHis.FK_ID = his2.FK_ID and lastHis.CREATED_TIME < his2.CREATED_TIME
WHERE his2.ID is null
如果我理解正确,您希望加入最新版本。下面是一种优化的方法,可以选择最新的修订版本进行更新。如果这不是你想要的,请告诉我。它是为T-SQL编写的,因为我不熟悉PostgreSQL
UPDATE ARTICLES
SET SORT_NAME = lastHist.NAME
FROM ARTICLES AS t
--Join the the most recent history entries
INNER JOIN REVISION lastHis ON t.ID = lastHis.FK_ID
--limits to the last history in the WHERE statement
LEFT JOIN REVISION his2 on lastHis.FK_ID = his2.FK_ID and lastHis.CREATED_TIME < his2.CREATED_TIME
WHERE his2.ID is null
表结构将有助于更好地定义问题 对于博士后:
UPDATE ARTICLES ar
SET sort_name = (SELECT name FROM Revisions rev
WHERE rev.article_id = ar.article_id
ORDER BY rev.createdate DESC LIMIT 1)
表结构将有助于更好地定义问题 对于博士后:
UPDATE ARTICLES ar
SET sort_name = (SELECT name FROM Revisions rev
WHERE rev.article_id = ar.article_id
ORDER BY rev.createdate DESC LIMIT 1)
与其让这成为一个完全的单词问题,不如向我们展示一些ascii表或创建语句。你也更有可能得到一些有用的东西。与其让这成为一个完全的单词问题,不如向我们展示一些ascii表或创建语句。你也更有可能得到一些有用的东西。