Sql 具有一个不同列的两个相同行的自联接

Sql 具有一个不同列的两个相同行的自联接,sql,Sql,您好,我有一个包含以下数据的表格 A B bid status 10 20 1 SUCCESS_1 10 20 1 SUCCESS_2 10 30 2 SUCCESS_1 10 30 2 SUCCESS_2 现在我想根据SUCCESS_1和SUCCESS_2打印或计算上面的行。我创建了以下查询,但它不起作用,它只是通过组合两行返回一行 select * from tbl t1 join

您好,我有一个包含以下数据的表格

A      B     bid  status
10     20    1    SUCCESS_1
10     20    1    SUCCESS_2
10     30    2    SUCCESS_1
10     30    2    SUCCESS_2   
现在我想根据SUCCESS_1和SUCCESS_2打印或计算上面的行。我创建了以下查询,但它不起作用,它只是通过组合两行返回一行

select * from tbl t1  join tbl t2 on
on (t1.A=t2.A and t1.B=t2.B and
(t1.Status = 'SUCCESS_1' and t2.Status = 'SUCCESS_2')
where t1.bid= 1
我希望上述查询的输出如下

 A      B     bid  status
    10     20    1    SUCCESS_1
    10     20    1    SUCCESS_2

我是SQL新手,请指导。提前感谢。

如果您出于某种原因需要加入,例如,如果您按1列分组,则数据库不允许您选择所有内容,因为它希望所有内容都被分组或聚合,您可以执行以下操作:

SELECT * FROM `tbl1` WHERE `bid`=1 GROUP BY `status`
select t1.* 
from tbl t1  join tbl t2
on (t1.A=t2.A and t1.B=t2.B and t1.Status = 'SUCCESS_1' and t2.Status = 'SUCCESS_2')
where t1.bid= 1
union all select t2.* 
from tbl t1  join tbl t2
on (t1.A=t2.A and t1.B=t2.B and t1.Status = 'SUCCESS_1' and t2.Status = 'SUCCESS_2')
where t1.bid= 1
order by 1,2,3,4

您的原始查询将收回一行中的所有数据,但这一行将分别收回生成连接行的两行。

请添加您想要的确切输出。@juergend请参阅添加的注释。对不起,我的问题不完整。