我有一个包含列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;
现在我没有得到怎么做。
我必须删除已经按相反顺序出现的记录。
请帮助
提前致谢
答案 0 :(得分:4)
基本上,您可以通过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 ║
╚═══════╩═════════╝
答案 1 :(得分:2)
试试这个:
select tbl1.name as n1, tbl2.name as n2 from test tbl1
join test tbl2
on tbl1.name < tbl2.name
order by tbl1.name, tbl2.name;
<强>解释强>:
您可以添加条件tbl1.name < tbl2.name
以消除重复值。这样您就不需要已有的连接条件(tbl1.name != tbl2.name
)。因为当&lt; b,a绝对不等于b,它也会对你的名字进行排序,以便在Amit&lt; Bhagi是对的,事实并非如此,你也不会得到Bhagi - Amit。