我有以下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查询应该是什么吗?
谢谢:)
答案 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')