【问题标题】:create a master_id to identify dupes in postgresql创建一个 master_id 来识别 postgresql 中的欺骗
【发布时间】:2019-03-01 19:02:13
【问题描述】:

出于商业原因,我有一张包含图片信息的表格,它们可能会被复制,但我们无法删除这些骗子。每张图片都有一个 image_id,所以我们可以拥有超过 1 个 image_id 的同一张图片(一点也不好看)。

对于其他任务,我需要避免选择相同的图片来显示,所以我想创建一个新列来定义一个“master_id”,比如同一张图片的最小 image_id。

现在,我能够查询/检测其中哪些是在带有图片信息的字段上加入表的骗子 ->

.

但是例如第 4 行它不应该出现,因为第 2 行和第 3 行已经创建了它,并且会影响 master_id 列中表的更新。

知道如何轻松创建这个 master_id 列吗?

第 2,3 和 4 行的最终输出应如下所示:

image_id  | master_id
11397     | NULL
12226     | 11397
12232     | 11397

【问题讨论】:

  • 你能分享一下你用来在图片中生成结果的查询吗?

标签: sql postgresql sql-update


【解决方案1】:

您可以使用外部表创建关系,将图像分组到参考中。

例如:

在 hipotetic cenary 中,创建表 DocumentVersion 并在此表中对图像进行分组:

CREATE TABLE document_version (int id, varchar description)

在下一步中,创建 ImageDocumentVersion

CREATE TABLE image_document_version (int id, fk_document_version)

在查询选择图像时,您会提供文档版本。当您需要选择最近的图像时,请参考选择图像最大 id 的文档版本

SELECT max(id) FROM image_document_version WHERE fk_document_version = [[id of document]]

希望能帮到你。 问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2013-05-03
    • 2019-06-30
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多