一尘不染

如何从MySQL中的联接查询中删除重复的行

sql

我有一个包含列ID和名称的表

在我的表中有3条记录

id       name 
1        Chinmoy
2        Amit
3        Bhagi

我想要结果

name1     name2 
Amit      Bhagi
Amit      Chinmoy
Bhagi     chinmoy

我尝试并成功了

name1    name2
Amit     Bhagi
Amit     Chinmoy
Bhagi    Amit
Bhagi    Chinmoy
Chinmoy  Amit
Chinmoy  Bhagi

通过使用此查询

select tbl1.name,tbl2.name from test tbl1 
join test tbl1 on tbl1.name != tbl2.name
order by tbl1.name,tbl2.name;

现在我不知道该怎么办。

我必须消除已经以相反顺序出现的记录。

请帮忙

提前致谢


阅读 137

收藏
2021-05-16

共1个答案

一尘不染

基本上,您可以通过以下方式从两个表的乘积中过滤结果 a.Name < b.Name

SELECT  a.Name Name1, b.Name Name2
FROM    TableName a, TableName b
WHERE   a.Name < b.Name
ORDER   BY Name1, Name2

输出

╔═══════╦═════════╗
║ NAME1 ║  NAME2  ║
╠═══════╬═════════╣
║ Amit  ║ Bhagi   ║
║ Amit  ║ Chinmoy ║
║ Bhagi ║ Chinmoy ║
╚═══════╩═════════╝
2021-05-16