MySQL:选择与另一行中特定值相关的所有行

时间:2012-06-13 09:43:32

标签: mysql

我有以下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 个答案:

答案 0 :(得分:2)

以下查询应返回所需的结果。这使用select查询将结果返回给WHERE子句。

SELECT * FROM yourTable 
WHERE trans_id IN (
    SELECT trans_id FROM yourTable WHERE code='B'
) 
AND code!='B'

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分:0)

如果我正确理解你的问题,那么子查询会得到你所需要的。

SELECT * FROM yourTable WHERE id IN (SELECT trans_id FROM yourTable WHERE code='B')