SQL 中带有 2 个参数的子查询

Subquery with 2 parameters in SQL

我在 SQL 中有一个 table,它看起来像这样:

[

现在,我想要基于 2 个条件的结果 table:

  1. Prev_trans_id 应该匹配 transactions_ID

  2. 只有那些 mod 金额值不相等的条目才应该出现。

结果 table 应该是这样的:

所以,在结果 table 中,我不希望 Transcation_ID 的行为 104,因为 mod 的数量相同。支付了 1 美元,退还了 1 美元。

我能够完成其中的第一部分,但无法完成第二部分,因为我是 SQL 的新手。这是我的第一部分代码:

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

如果我能将第二个条件也包含在同一个查询中,那将非常有帮助。

使用 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,而是您要比较的金额的否定。

这里不需要使用子查询,因为它可以通过 table1table2 上的基本 select ... from ... where ... 查询来实现。请看下面的查询:

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