2016-05-17 103 views
0

我在蜂房两个表:

表1:蜂巢联接查询

1,Nail,maher,24,6.2 
2,finn,egan,23,5.9 
3,Hadm,Sha,28,6.0 
4,bob,hope,55,7.2 

表2:

1,Nail,maher,24,6.2 
2,finn,egan,23,5.9 
3,Hadm,Sha,28,6.0 
4,bob,hope,55,7.2 
5,john,hill,22,5.5 
6,todger,hommy,11,2.2 
7,jim,cnt,99,9.9 
8,will,hats,43,11.2 

是否有蜂巢任何方法来检索表2中的新数据表1中不存在?

在其他数据库工具中,您可以使用内部左/右。但内部左/右不存在蜂巢和建议如何实现?

回答

1

如果您使用的蜂巢版本> = 0.13,您可以使用此查询:

SELECT * FROM A WHERE A.firstname, A.lastname ... IN (SELECT B.firstname, B.lastname ... FROM B); 

但我不知道,如果蜂巢支持IN子句中的多个coloumns。 如果没有这样的事情可以工作:

SELECT * FROM A WHERE A.firstname IN (SELECT B.firstname FROM B) AND A.lastname IN (SELECT b.lastname FROM B) ...; 
+0

这工作完美,我所要做的就是使用**而不是**。 供参考:第一个没有工作,但第二个没有。 非常感谢 –

+0

感谢您的信息 – ZeusNet

0

这可能是明智的测试不之前来串联领域一起:NOT

SELECT * 
FROM t2 
WHERE CONCAT(t2.firstname, t2.lastname, CAST(t2.val1 as STRING), CAST(t2.val2 as STRING)) NOT IN 
    (SELECT CONCAT(t2.firstname, t2.lastname, CAST(t2.val1 as STRING), CAST(t2.val2 as STRING)) 
    FROM t1) 

执行顺序IN子查询可能给你错误的结果。

从以上示例中,具有值('nail','egan',28,7.2)的新记录不会在顺序NOT IN语句中显示为新的记录。