1

mysqlを使用して、条件に基づいてテーブルの間にレコードを取得しようとしています。これが私のテーブルです。テーブル名:trans_tableで、2つのフィールドがあります。

item    transaction
-----   -----------
item1   b
item2   b
item3   b
item3   c
item4   d
item5   b

トランザクションbのみを持つアイテムを取得しようとしています。したがって、結果には他のトランザクションは含まれていません。必要な出力は次のようになります

item   transaction
-----  -----------
item1   b
item2   b
item5   b

(becoz item3はbと一緒にトランザクションcを持ち、item4とitem4はトランザクションbを含みません)

次のクエリで試してみました

1.`select * from trans_tbl where transaction = 'b'`

2.`select item,qty from trans_tbl where item in(select item from trans_table group by    item having count(item)=1);`

上記の2つのクエリでは、必要な出力を取得できません。それで、これを取得する他の方法はありますか?

4

2 に答える 2

0

別の解決策:

select distinct t1.item, t1.transaction
from trans_tbl t1
left join trans_tbl t2 on t1.name=t2.name and t1.transaction<>t2.transaction
where t2.name is null

左の結合と null の右の部分のチェックはうまくいきます。

于 2012-05-11T19:52:21.140 に答える
0

このようなことを試してください。すべてのアイテムをグループ化し、1. 単一のトランザクションを持ち、2. そのトランザクションが 'b' であるアイテムのみを返します。

select item, transaction
from trans_tbl
where transaction = 'b'
group by item, transaction
having count(item) = 1
于 2012-05-11T18:12:27.010 に答える