sqlite 如何使用SQL选择表中唯一的元素对

siotufzp  于 2022-11-15  发布在  SQLite
关注(0)|答案(2)|浏览(149)

我有一个人表,每个人都可以有一个助理合伙人,如下所示:
Id_Person|姓名|id_Partner
-|-|
1|哈维|5
2|John|4
3|Mike|6
4|Lucy|2
5|珍妮|1
6|辛迪|3
所以我想问一个问题,我可以得到所有没有重复的情侣,比如
名称1|名称2

哈维|珍妮
John|Lucy
Mike|辛迪
我现在知道如何用Python语言来做这件事,但在SQL中我却一无所知
提前谢谢你!

nfeuvbwi

nfeuvbwi1#

在SQL中,我们使用自内连接来解决这些问题,这是在创建表的临时别名并将表连接到其别名时。联接条件将是两个不同的列,每个表中的一个列彼此相等。
这允许您从单个列生成成对的列,但所有行都将以向后表示形式复制。要消除这些,您需要一个过滤器,在该过滤器中,您可以比较一列小于另一个表中的相应列。
正如条件所示,这意味着一组人的ID必须全部小于所有合作伙伴的ID。
下面是为您的表编写查询的方式:

SELECT Table1.Name AS "Name 1", Table2.Name AS "Name 2" FROM Table1 INNER JOIN (Table1) Table2 ON Table1.id_person = Table2.id_partner WHERE Table1.id_person < Table2.id_person

然后,如果需要,可以按任一名称列进行排序以对输出进行排序。

hjqgdpho

hjqgdpho2#

选择T2.[名称]作为名称1,T1。从表名T1中选择[名称]作为名称2内联接t2.id_Partner=t1.id_Person上的表名T2

相关问题