首页 > 解决方案 > 查询从具有添加约束的单个列中获取不同的对

问题描述

我将如何从具有一对不应重复的约束的列中获取不同的对?所以我有一个这样的查询

SELECT DISTINCT s1.author_set_s_author_id,
         s2.author_set_s_author_id
FROM submission_record_author_set s1, submission_record_author_set s2
WHERE s1.author_set_s_author_id != s2.author_set_s_author_id;

这让我从该列中获得了所有可能的配对,但有一个约束,它不能与其自身配对,但这仍然可能发生:(1,2) 和 (2,1)。

在我的情况下,永远不应该重复一对。所以一对 1 和 2 应该只出现一次。关于如何将该约束添加到我的 SQL 查询的任何建议?

标签: mysqlsqlselect

解决方案


您可以简单地将子句中的!=比较替换为(to get instead of ) 或(to get instead of ):WHERE<(1,2)(2,1)>(2,1)(1,2)

SELECT DISTINCT s1.author_set_s_author_id,
                s2.author_set_s_author_id
FROM submission_record_author_set s1, submission_record_author_set s2
WHERE s1.author_set_s_author_id < s2.author_set_s_author_id;

推荐阅读