1

次のmysqlテーブルがあります。B列に値を持つ行に関連するすべての行を選択しようとしていcodeます。リレーションは列の値に基づいていますtrans_id

id   trans_id  code  amount   side
1      1         A    200     left
2      1         B    200     right
3      2         J    100     right
4      2         C    100     right
5      2         B    200     left
6      3         A    630     right
7      3         K    630     left

私の期待される結果:

  id   trans_id  code  amount   side
  1      1         A    200     left
  3      2         J    100     right
  4      2         C    100     right

これを達成するための mysql クエリを教えてください。

ありがとう :)

4

4 に答える 4

2

次のクエリは、必要な結果を返す必要があります。これは、選択クエリを使用して結果を WHERE 句に返します。

SELECT * FROM yourTable 
WHERE trans_id IN (
    SELECT trans_id FROM yourTable WHERE code='B'
) 
AND code!='B'
于 2012-06-13T10:09:25.617 に答える
1

あなたの質問は明確ではありませんが、私が理解している限り、次のような自己結合を使用できます。

select a.id, 
       a.trans_id, 
       a.code, 
       a.amount, 
       a.side 
    from table as a
    inner join table as b on (a.id=b.trans_id and b.code='B');

これにより、table.id=2の行が返されます。

id   trans_id  code  amount   side
2      1         B    200     right
于 2012-06-13T09:56:37.177 に答える
1
select 
    t1.* 
from 
    table_name t1 
        inner join table_name t2 on t1.trans_id = t2.trans_id 
where 
    t2.code = 'B' and 
    t2.code <> t1.code
于 2012-06-13T10:08:06.810 に答える
0

あなたの問題を正しく理解していれば、サブクエリで必要なものが得られます。

SELECT * FROM yourTable WHERE id IN (SELECT trans_id FROM yourTable WHERE code='B')
于 2012-06-13T09:48:10.417 に答える