我有一个带有列的表:conditional1,conditional2,data。如果其中任何一行还包含conditional2 = value2,则我需要返回其中conditional1 = value1的所有行。我怎样才能做到这一点?

编辑:关于我在问什么有些困惑。

如果您有专栏

`conditional1 |条件2 |数据

A | A |一种

A | B | A`

如果conditional1 = A和conditional2 = B,我想返回两行

编辑2:仍然有些混乱。

这是另一个示例:

条件1 |条件2 |数据

1 | 1 |一种

1 | 2 |乙

2 | 1 | C

2 | 2 | d

如果conditional1 = 1和conditional2 = 1,则应返回

1 | 1 |一种

1 | 2 |乙

如果conditional1 = 2和conditional2 = 1,则应返回

2 | 1 | C

2 | 2 | d

如果conditional1 = 2和conditional2 = 2,则应返回

2 | 1 | C

2 | 2 | d

如果conditional1 = 2和conditional2 = 3,则不应返回任何行。

最佳答案

select *
from tbl A
where conditional1 = 'A'
and exists (
  select * from tbl B
  where B.conditional1 = 'A' and B.conditional2 = 'B')


或更MySQL友好的版本

select * from tbl
where conditional1 in
(
    select conditional1
    from tbl
    where conditional1 = 'A' and conditional2 = 'B'
)

10-02 14:03