当前位置: 首页 > 面试题库 >

如何在多个列之间强制执行类似集合的唯一性?[复制]

年风华
2023-03-14
问题内容

这个问题已经在这里有了答案

2列组合上的sql唯一约束 (3个答案)

6年前关闭。

我不确定我是否正确表达了这个问题,所以我将尝试更长的解释。我有这种桌子:

CREATE TABLE x (a int, b int);

我想将(a,b)对与(b,a)相同,并禁止插入重复项。如果PostgreSQL有set数据类型,我可以这样声明表:

CREATE TABLE x (
    ab set,
    UNIQUE (ab)
);

但是事实并非如此,那么最好的方法是什么?


问题答案:
create unique index idx_unique_ab 
    on x (least(a,b), greatest(a,b));


 类似资料:
  • 问题内容: 我在MySQL服务器中有以下表格: 在每个数据库中,UID是唯一的标识符,由数据库创建。 有一些外键可以确保UID上的Employee-> Office-> Company之间的链接。 办公室和员工中的ExternalID字段是公司(实际上是我的客户)提供给我的应用程序的ID。客户端没有(也不在乎)我自己的ID,而我的应用程序从他们那里收到的所有数据仅根据其ID(即我的表中的Exter

  • 问题内容: 我定义了一个MySQL表: 我在这里阅读到MySQL不支持带条件的。对于每个 customerId, 我们只有一个 primaryImage = 1 。 那么我还能采取什么措施来强制执行此约束? 问题答案: 完美支持独特的约束。 但是,它不支持部分约束/索引,因此您需要使用而不是标记非主图像。 您可以将任意数量的值插入到每个客户中,但只能插入一个非空值。

  • 假设我有一个记录品牌之间相关性值的集合(别管如何生成或解释这种相关性。)那么这个集合中的字段将包括:'Brand1'、'Brand2'和'correlation'。 为了举例起见,假设品牌可以承担“Google”、“Microsoft”等字符串值,这样每个文档就记录了各种品牌名称之间的相关性。 我想在'Brand1'和'Brand2'字段上创建一个唯一的索引,以便每个文档在集合中只记录一对品牌之间

  • 我想在PostgreSQL中设置一个表,这样两列在一起必须是唯一的。任何一个值都可以有多个值,只要没有两个值同时共享。 例如: 因此,和可以重复,但不能同时重复。因此,这是允许的(不包括id) 但不是这个:

  • 我在数据帧df1中有一组列(col1,col2,col3)我在数据帧df2中有另一组列(col4,col5,col6)假设这两个数据帧具有相同的行数。 如何生成在df1和df2之间进行成对关联的关联表? 桌子会像 我使用,它似乎没有根据需要生成表。 我在这里问了一个类似的问题:如何在具有不同列名的两个数据帧之间执行关联,但现在我处理的是分类列。 如果不能直接比较,是否有标准的方法使其具有可比性(如

  • 这是我的限制: 该查询证明约束实际上不起作用: 下面是输出: 为什么唯一性没有被强制执行?