【问题标题】:Two columns cannot be the same in multiple rows [duplicate]多行中的两列不能相同[重复]
【发布时间】:2022-12-04 21:54:18
【问题描述】:

有没有办法确保两列的组合是唯一的,但每一列本身都可以重复?

如果我们感冒了一个b我希望系统允许此查询。

INSERT INTO test VALUES (1, 2);
INSERT INTO test VALUES (1, 3);
INSERT INTO test VALUES (2, 2);
INSERT INTO test VALUES (2, 3);

但不是这个

INSERT INTO test VALUES (1, 2);
INSERT INTO test VALUES (1, 2);

【问题讨论】:

    标签: sql


    【解决方案1】:

    是的,您可以在 a 列和 b 列的组合上创建唯一索引,以确保这些列中的值在一起考虑时是唯一的。

    以下是如何在 MySQL 中的 a 和 b 列上创建唯一索引的示例:

    CREATE TABLE test (
      a INT,
      b INT,
      UNIQUE KEY (a, b)
    );
    

    在此示例中,唯一索引是在列 a 和 b 的组合上创建的。这意味着这些列中的值在一起考虑时必须是唯一的。但是,当单独考虑时,这些列中的每一列都可能具有重复值。

    例如,将允许以下查询:

    INSERT INTO test VALUES (1, 2);
    INSERT INTO test VALUES (1, 3);
    INSERT INTO test VALUES (2, 2);
    INSERT INTO test VALUES (2, 3);
    

    但是下面的查询将不被允许,因为它试图为列 a 和 b 的组合插入重复值:

    INSERT INTO test VALUES (1, 2);
    INSERT INTO test VALUES (1, 2);
    

    此示例中创建的唯一索引将阻止执行第二个查询,因为它试图为列 a 和 b 的组合插入重复值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2020-02-23
      • 2014-10-07
      • 2022-01-21
      • 2020-03-06
      • 1970-01-01
      • 2017-02-09
      相关资源
      最近更新 更多