sql - 作为 A、B 或 B、A 的唯一列对

标签 sql mysql

如果我有一个包含两列的连接表,TeamA 和 TeamB,我如何确保每一对都是唯一的?

显然我可以在这些列上放置一个唯一的复合索引,但这只会确保顺序 A、B 而不是 B、A 的唯一性,对吗?

TeamA | TeamB
-------------
 red  | blue
 pink | blue
 blue | red

如您所见,Red vs. Blue 已被指定为第一条记录,然后再次指定为最后一条记录。这应该是非法的,因为他们已经面对面了。

编辑:另外,还有办法处理 SELECT 的情况吗?还是更新?删除?等等。

另外,主队或客队的想法已经被提出,这在这里可能很重要。在考虑如何在数据库端构建括号系统时,我想到了这个最初的概念。

最佳答案

定义一个约束,例如,A 列中的值必须(按字母顺序或数字)小于 B 列中的值:因此您可以插入 {blue,red} 但不能插入 { red,blue} 因为蓝色小于红色。

关于sql - 作为 A、B 或 B、A 的唯一列对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844646/

相关文章:

PHP - 递归地从SQL数据库中获取数据

MySQL EXPLAIN - 它每次都给我不同的解释

mysql - SQL 根据连续日期获取值的变化,并按值分组

php - php上线 fatal error : Call to a member function execute() on a non-object in/public_html/website/index.

mysql - SQL查询性能对于MySQL来说太差了

sql - 涉及成员时的简单 select 语句

sql - 批处理与 SQL 语句

mysql - SQL 查询从同一列中选择多个值

mysql - 关于 SQL 中时间戳的思考,比较当前年份

MySQL 如何将第二组参数结果转换为列?