标签: duplication

选择列在多个记录中包含相同数据的行

我有一个表,其中有一列名为article_title. 假设表名是articles. 我需要找出多个记录中article_title数据相同的记录。

这是我所拥有的:

select a.* 
from articles a 
where a.article_title = (select article_title 
                         from articles 
                         where article_title = a.article_title 
                         AND a.id <> articles.id)
Run Code Online (Sandbox Code Playgroud)

mysql duplication

36
推荐指数
2
解决办法
39万
查看次数

忽略重复插入的最佳方法?

背景

此问题与使用 PostgreSQL 9.2 或更高版本忽略重复插入有关。我问的原因是因为这段代码:

  -- Ignores duplicates.
  INSERT INTO
    db_table (tbl_column_1, tbl_column_2)
  VALUES (
    SELECT
      unnseted_column,
      param_association
    FROM
      unnest( param_array_ids ) AS unnested_column
  );
Run Code Online (Sandbox Code Playgroud)

代码不受检查现有值的影响。(在这种特殊情况下,用户并不关心插入重复项的错误——插入应该“正常工作”。)在这种情况下添加代码来显式测试重复项会带来复杂性。

问题

在 PostgreSQL 中,我找到了几种忽略重复插入的方法。

忽略重复 #1

创建一个捕获唯一约束违规的事务,不采取任何行动:

  BEGIN
    INSERT INTO db_table (tbl_column) VALUES (v_tbl_column);
  EXCEPTION WHEN unique_violation THEN
    -- Ignore duplicate inserts.
  END;
Run Code Online (Sandbox Code Playgroud)

忽略重复 #2

创建规则以忽略给定表上的重复项:

CREATE OR REPLACE RULE db_table_ignore_duplicate_inserts AS
    ON INSERT TO db_table
   WHERE (EXISTS ( SELECT 1
           FROM db_table
          WHERE db_table.tbl_column = NEW.tbl_column)) DO INSTEAD NOTHING;
Run Code Online (Sandbox Code Playgroud)

问题

我的问题主要是学术性的:

  • 什么方法最有效?
  • 什么方法最容易维护,为什么? …

postgresql constraint insert duplication unique-constraint

35
推荐指数
1
解决办法
9万
查看次数

在PostgreSQL中检查两个表的内容是否相同

这已经在 Stack Overflow 上问过了,但仅限于 MySQL。我正在使用 PostgreSQL。不幸的是(而且令人惊讶的是)PostgreSQL 似乎没有像CHECKSUM table.

PostgreSQL 解决方案会很好,但通用的解决方案会更好。我找到了http://www.besttechtools.com/articles/article/sql-query-to-check-two-tables-have-identical-data,但我不明白使用的逻辑。

背景:我重新编写了一些数据库生成代码,所以我需要检查新旧代码是否产生相同的结果。

postgresql duplication

35
推荐指数
2
解决办法
9万
查看次数

在重复键上什么都不做

我正在使用带有 PtokaX API 的 LuaSQL 插入到下表中。

CREATE TABLE `requests` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `ctg` VARCHAR(15) NOT NULL,
    `msg` VARCHAR(250) NOT NULL,
    `nick` VARCHAR(32) NOT NULL,
    `filled` ENUM('Y','N') NOT NULL DEFAULT 'N',
    `dated` DATETIME NOT NULL,
    `filldate` DATETIME NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `nick_msg` (`nick`, `msg`),
    UNIQUE INDEX `ctg_msg` (`ctg`, `msg`)
)
COMMENT='Requests from users in any of the categories.'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是,当用户(由 表示nick)尝试再次插入相同的请求时,UNIQUE会检查索引并且脚本返回 false。这会导致我的脚本失败,我必须重新启动脚本。

有什么我可以在INSERT ... ON DUPLICATE KEY …

mysql insert duplication update

17
推荐指数
1
解决办法
5万
查看次数

多个冲突目标

我在列ab. 我需要这样的东西:

insert into my_table (a, b) values (1, 2), (1, 2)
on conflict (a) do update set c = 'a_violation'
on conflict (b) do update set c = 'b_violation'
Run Code Online (Sandbox Code Playgroud)

所以一般我想根据冲突目标进行不同的更新 - 不支持上面的语法(只支持一个on conflict语句)。有没有其他方法可以做到这一点?

postgresql duplication upsert postgresql-10

16
推荐指数
1
解决办法
1万
查看次数

如何将我的 SQL Azure 数据库复制到本地 SQL Server 实例?

我有一个托管在 SQL Azure 实例上的 OLTP 数据库。我想从云中提取数据库的副本,以便我可以对其运行一些大量提取和 OLAP 样式的查询,而不会影响源数据库。

如何将数据库的副本下拉到本地 SQL Server 实例?

backup duplication azure-sql-database

12
推荐指数
1
解决办法
1万
查看次数

如何简洁地检查子查询是否只有一个不同的结果和指定的值?

我发现自己写了以下内容:

select 'yes' 
where exists(select * from foo where val=1)
and not exists(select * from foo where val<>1);
Run Code Online (Sandbox Code Playgroud)

并想知道是否有更简洁的方法而不牺牲太多的可读性。

我找到了一种作为答案发布的方法,但我对此并不完全满意,并且对替代方案非常感兴趣

在这种情况下val是唯一的foo- 没有重复

postgresql duplication

10
推荐指数
2
解决办法
5547
查看次数

如何删除 PostgreSQL 连接表中的重复记录?

我有一个表,其架构如下:

create_table "questions_tags", :id => false, :force => true do |t|
        t.integer "question_id"
        t.integer "tag_id"
      end

      add_index "questions_tags", ["question_id"], :name => "index_questions_tags_on_question_id"
      add_index "questions_tags", ["tag_id"], :name => "index_questions_tags_on_tag_id"
Run Code Online (Sandbox Code Playgroud)

我想删除重复的记录,即它们既具有相同的记录tag_idquestion_id与另一条记录相同。

SQL 看起来像什么?

postgresql duplication

9
推荐指数
2
解决办法
1万
查看次数

部分数据库转储/恢复

我的数据库(PostgreSQL 9.3)的一部分依赖于额外的表(例如 County、City、Town...)。我不管理这些表,它们由第三方定期更新。每次我得到一个新的完整转储,但我很难将更改推回我的数据库。

我玩过 pg_dump / restore 并遇到了一些约束问题duplicate key value violates unique constraintcannot drop constraint ... because other objects depend on it甚至使用--disable-triggersor--clean选项。

有没有我错过的选项?我发现有一些方法可以打开/关闭约束,但我不知道这是解决这个问题的好方法还是只是一个肮脏的黑客?(我不是 DBA 专家。)老实说,我很惊讶没有简单的方法来实现这一目标。也许我已经错过了!我天真地认为我可以将 pg_restore 作为一个大事务运行并在脚本末尾检查约束。是否可以?

postgresql duplication restore

9
推荐指数
1
解决办法
4219
查看次数

如何在不使用 UNION ALL 或临时表的情况下显示每个存储的行两次?

名为 的相关表emp包含以下数据:

CREATE TEMPORARY TABLE emp AS
SELECT * FROM ( VALUES (1,'A'), (2,'B'), (3,'C') );

 ID  Name
 --  ----
 1    A
 2    B
 3    C
Run Code Online (Sandbox Code Playgroud)

数据操作操作的输出或结果集应如下所示:

 ID  Name 
 --  ----
 1    A
 1    A 
 2    B
 2    B
 3    C
 3    C
Run Code Online (Sandbox Code Playgroud)

要求

必须获得符合以下条件的输出:

  • 未使用 UNION ALL 运算符与所采用的 SELECT 语句相关联
  • 不使用临时表
  • 不对现有表使用 UPDATE 操作

注意:这个场景是一个面试官给我带来的。

interview-question duplication

8
推荐指数
4
解决办法
1万
查看次数