如果ANY行包含某个键的指定值,如何选择该键的所有行



我有一个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')

最新更新