我已经澄清了如何使用Oracle SQL连接。
情境:
我有两张桌子。
T1具有以下结构
cId,pId,uId,catId,catName,tId,tName,tEvent
&安培; T2具有以下结构
cId,uId,pId
PS: cId,uId和pId是常见的列
我想要一个sqL语句,它将为我提供以下内容
1)T1上有或没有匹配的所有记录
2)T2上的记录不在T1中。
例如: -
T1
:
cId pId uId catId catName tId tName tEvent
1001 2010 dolp 11 Amber 1100 Rod Login
1001 2014 dolp 11 Amber 1100 Rod Login
1002 2010 dolp 13 Anders 1500 Oli Login
1003 2010 dolp 14 Rock 1501 Ret Login
1004 2010 dolp 15 Lila 1600 Win Login
T2
:
cId pId uId
1001 2010 dolp
1001 2015 dolp
查询应提供以下结果:
cId pId uId catId catName tId tName tEvent
1001 2010 dolp 11 Amber 1100 Rod Login
{Record in T1}
1001 2014 dolp 11 Amber 1100 Rod Login {Record in T1}
1002 2010 dolp 13 Anders 1500 Oli Login {Record in T1}
1003 2010 dolp 14 Rock 1501 Ret Login {Record in T1}
1004 2010 dolp 15 Lila 1600 Win Login {Record in T1}
1001 2015 dolp 11 Amber 1100 Rod Login {Record in T2}
对此的帮助非常感谢。
感谢。
答案 0 :(得分:2)
1)T1上的所有记录,包括T2匹配或不匹配
SELECT T1.*
FROM T1 LEFT OUTER JOIN T2 ON T2.cId=T1.cId
AND T2.uId=T1.uId
AND T2.pId=T1.uId
/
2)T2上的记录不在T1中。
SELECT T2.*
FROM T2
WHERE NOT EXISTS
(SELECT 1
FROM T1
WHERE T1.cId=T2.cId
AND T1.uId=T2.uId
AND T1.pId=T2.uId)
/
答案 1 :(得分:0)
使用左外连接,其中T2是第一个表。以下参考了解连接。
(X.T.reshape((d,m*n)) * Y.T.reshape((d,n*m))).sum(axis=0).reshape((m,n)).T