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

时间:2014-02-24 17:10:33

标签: mysql sql select

我有一个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语句,但我从来没有这样做过,也无法弄明白。

感谢。

4 个答案:

答案 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')