如何在不同查询条件下联接同一表的列

时间:2019-01-22 17:25:10

标签: mysql

我在这里说明我的表名称TB包含三列和类似的数据

Cl1.        Cl2           Cl3
0.             X.              A
0.             Y.               B
0.             Z.               C
1.             X.               a 
1.             X.               b
1.             X.               c
1.             Z.               d

我这样输出

Cl1.         Cl2.           Cl3.        No
0.             X.              A.          3
0.             Y.              B.          0
0.             Z.              C.          1

此处没有列显示Cl2的重复。当Cl1。= 1时的值与Cl2的相应值。当Cl1。 = 0表示Cl1。 = 1,在这里我们可以看到Cl。= 1和Cl2。= X,它的值对于Cl1。= 1重复两次,类似于在找不到Cl1。= 1和Cl2。= Y时不匹配0

我希望我已经描述了我的问题

我做了很多尝试,但没有得到任何解决方案。我的问题浮现在脑海。  我的几次尝试就像

Select Cl1. ,Cl2. ,Cl3. ,IF(Cl2.=(Select Cl2. From TB where Cl1.=1),Cl2. ,0) as no. 
From TB 
where Cl2.=0

我也尝试对同一张表使用join type语句,但这也无济于事。 请大家帮我。如果我在描述我的问题时犯了任何错误,那么我是栈溢出新手,

1 个答案:

答案 0 :(得分:0)

尝试一下,@ Rajesh

SELECT 
    t1.cl1,
    t1.cl2,
    t1.cl3,
    IFNULL(cnt, 0) as No
FROM
(
    SELECT cl1, cl2, cl3 FROM tb WHERE cl1=0
) AS t1
LEFT OUTER JOIN
(
    SELECT cl2, COUNT(cl2) AS cnt FROM tb WHERE cl1 <> 0 GROUP BY cl2
) AS t2
ON t1.cl2=t2.cl2