我有一个MySQL(事务)表,其中包含这两列
Col1 =帐户 Col2 = trans_type
给定帐户可以有很多行。
我想要一个select,它返回任何帐户的所有行(按帐户分组),如果该帐户的任何行都有transaction_type =“A”。
所以,数据看起来像这样
acct trans_type sku 102 B 6001 102 C 6220 103 A 6006 103 C 6003 103 D 6007 104 A 6006 104 B 6007
在该示例中,行为103和104具有反式类型为“A”的行。因此,查询应该返回acct 103的所有行和acct 104的所有行。
这可以通过一次选择吗?
我认为我需要一个嵌套的select语句,但我从来没有这样做过,也无法弄明白。
感谢。
答案 0 :(得分:1)
首先,选择子查询中acct
的所有trans_type = 'A'
然后,使用acct
s
SELECT acct, trans_type, sku
FROM table
WHERE acct IN (
SELECT DISTINCT acct
FROM table
WHERE trans_type = 'A');
答案 1 :(得分:0)
试试这个SQL语句:
SELECT *
FROM table
WHERE acct IN (
SELECT acct
FROM table
WHERE trans_type = 'A'
)
答案 2 :(得分:0)
这个使用简单连接
SELECT t.*
FROM mytable t join mytable u
on t.acct = u.acct and t.trans_type = 'A'
答案 3 :(得分:0)
这将有效.......
select * from table_name where acct in(select table from table_name where trans_type ='A')