sql:来自一个表的行的融合

sql:来自一个表的行的融合,sql,inner-join,Sql,Inner Join,我有一张这样的桌子: idA descriptionsA idB AA blablaAA BB AA blablaAA CC BB blablaBB AA 我想: 呜呜,呜呜,呜呜,呜呜 我有: SELECT * FROM mytable t1 INNER JOIN mytable t2 ON t1.idA = t2.idB AND t1.idB = t2.idA; 但它返回: AA blablaAA BB blablaBB BB blablaBB AA blablaAA 我怎样才能不创

我有一张这样的桌子:

idA descriptionsA idB
AA blablaAA BB
AA blablaAA CC
BB blablaBB AA
我想:

呜呜,呜呜,呜呜,呜呜

我有:

SELECT * FROM mytable t1 INNER JOIN  mytable t2 ON t1.idA = t2.idB AND t1.idB = t2.idA;
但它返回:

AA blablaAA BB blablaBB
BB blablaBB AA blablaAA

我怎样才能不创建所有这些doublon,或者怎样才能在之后删除它们?

可能是一个小于可以排序的值:

SELECT * FROM mytable t1 
INNER JOIN  mytable t2 ON t1.idA = t2.idB AND t1.idB = t2.ida AND t1.ida<t1.idb
从mytable t1中选择*

t1.idA=t2.idB和t1.idB=t2.idA和t1.idA上的内部联接mytable t2为什么有两个联接条件?当然,您只需要
SELECT*从mytable t1内部连接t1.idB=t2.IdA上的mytable t2
好问题。。。我不记得我为什么那样做了。我会删除一个我记得的条件!如果我不使用双重条件,它会返回很多错误的行,比如:AA blaaa BB CC blaccThank it works!(但不使用左联接,您知道为什么吗?)左联接将从左表中取出所有行,然后在联接条件为false的情况下用null填充右表。如果需要使用left join,则需要将小于条件从连接中取出并放入where子句:从mytable t1中选择*left join mytable t2 ON t1.idA=t2.idB和t1.idB=t2.idA where t1.idA