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