我必须创建一个辅助表才能比较它们,如下所示:
WHERE EXISTS
(SELECT *
FROM db."fTable2"
WHERE (db."fTable2"."idParent" = db."fTable1"."idWit"))
idParent和idWit都存在于Table1中,但是在同一个表中比较这两个表没有结果,而创建一个辅助表fTable2完成了这项工作。
有没有更好的办法?
我必须创建一个辅助表才能比较它们,如下所示:
WHERE EXISTS
(SELECT *
FROM db."fTable2"
WHERE (db."fTable2"."idParent" = db."fTable1"."idWit"))
idParent和idWit都存在于Table1中,但是在同一个表中比较这两个表没有结果,而创建一个辅助表fTable2完成了这项工作。
有没有更好的办法?
2条答案
按热度按时间kq0g1dla1#
我猜你有过这样的经历demo
做了一些沿着的事情:
但是这检查了来自同一行的
"idParent"
和"idWit"
,所以它什么也没找到。所以你做了这样的事情:但是同样没有找到任何东西,因为
exists
中的子查询正在检查完全相同的事情:这两个值是否相同。所以你把它们放到另一个表中:现在它可以工作了,因为它现在从
db."fTable1"
中获取行,并在db."fTable2"
中查找匹配的行。问题是,您可以使用别名db."fTable1"
来显式地声明您引用了同一个表两次,而不必克隆它:或者,作为@Kaushik Narayanpointed out,你可以用它本身
join
表:这是一堆猜测。如果你展示你的
create table
语句,你实际尝试的代码,你得到的结果或错误以及你期望的结果,你会得到更清晰、更快的答案。p4rjhz4m2#
JOINs
是你所需要的。