我有一个MySQL(事务)表,其中包括这两列
Col1=帐户Col2=trans_type
一个给定的帐户可以有很多行。
我想要一个选择,如果任何帐户的行具有transaction_type="a",则返回该帐户的所有行(按帐户分组)。
因此,数据可能看起来像这个
acct trans_type sku102 B 6001102 C 6220103 A 6006103 C 6003103 D 6007104 A 6006104 B 6007
在本例中,accts 103和104有一行的trans类型为"a"。因此,查询应该返回acct 103的所有行和acct 104的所有行。
只需一次选择就可以实现吗?
我想我需要一个嵌套的select语句,但我从来没有这样做过,也无法实现。
谢谢。
首先,选择子查询中具有trans_type = 'A'
的所有acct
然后,用那些acct
的获取所有行
SELECT acct, trans_type, sku
FROM table
WHERE acct IN (
SELECT DISTINCT acct
FROM table
WHERE trans_type = 'A');
试试这个SQL语句:
SELECT *
FROM table
WHERE acct IN (
SELECT acct
FROM table
WHERE trans_type = 'A'
)
这个使用简单连接
SELECT t.*
FROM mytable t join mytable u
on t.acct = u.acct and t.trans_type = 'A'
这将起作用。。。。。。。
select*from table_name where acct in(select acct from table_name where trans_type='A')