sql中带2个参数的子查询

vlf7wbxs  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(461)

我在sql中有一个如下所示的表:
[

现在,我需要基于2个条件的结果表:
上一个事务id应与事务id匹配
只有那些条目应该出现在金额值的mod不相等的地方。
结果表应如下所示:

因此,在结果表中,我不希望transaction\u id为104的行,因为amount的mod是相同的$付了1美元,还了1美元。
我可以做它的第一部分,但不能做第二部分,因为我是新的sql。这是我第一部分的代码:

select * from sample_table
where prev_trans_id in 
        (select transaction_id from sample_table)

如果我能把第二个条件也合并到同一个查询中,那将非常有帮助。

b1zrtrql

b1zrtrql1#

使用 JOIN ,不是 IN ```
SELECT t1.*
FROM sample_table AS t1
JOIN sample_table AS t2
ON t1.prev_trans_id = t2.transaction_id AND t1.amount != -1 * t2.amount

顺便说一句,不是 `mod` 在数量中,是你想要比较的数量的负数。
wgmfuz8q

wgmfuz8q2#

这里不需要使用子查询,因为它可以通过基本查询实现 select ... from ... where ... 查询 table1 以及 table2 . 请参见以下查询:

select table2.*
from sample_table table1, sample_table table2
where table1.transaction_id = table2.prev_trans_id
and (table1.amount - table2.amount) <> 0

相关问题