如何查询属性的未配对值

时间:2018-11-16 09:51:37

标签: sql

我有一个带有TransactionIDs和TransactionTypes的表。我有2种交易类型(存款和提款),每个交易都有一个交易ID。我需要检索仅归因于存款而不归因于现金支出的交易ID。

这是“交易”表:

public static class MyViewHolder extends RecyclerView.ViewHolder {
        // each data item is just a string in this case
        public TextView mTextView;
        public MyViewHolder(View v) {
            super(v);
            mTextView = v.findViewById(R.id.my_text_view);
        }
    }

这是我需要的结果:

TransactionType    TransactionID
--------------------------------
Deposit                 1234         
Cashout                 1234       
Cashout                 12345          
Cashout                 123456        
Deposit                 1256      
Deposit                 12345
Deposit                 123456
Deposit                 777

有人可以通过提供我所需结果的sql查询来帮助我吗? 预先感谢!

3 个答案:

答案 0 :(得分:2)

我会使用NOT EXISTS

SELECT t.*
FROM table t
WHERE transactiontType = 'Deposit' AND
      NOT EXISTS (SELECT 1 FROM table t1 WHERE t1.transactionid = t.transactionid AND t1.transactiontType <> t.transactiontType);

答案 1 :(得分:1)

在子查询的帮助下尝试:

select transactionId from <table> where transactiontType = 'Deposit' 
and transactionId not in 
(select transactionId from <table> where transactiontType = 'Cashout');

通过这种方式,您可以使用现金作为交易类型来过滤出交易ID

答案 2 :(得分:0)

使用EXCEPT返回有存款的transactionId,但有现金的除外:

select transactionId from tablename where transactiontType = 'Deposit' 
except
select transactionId from tablename where transactiontType = 'Cashout'