在不同的表中对相同的命名列进行计数和分组(仅来自一个表的where子句)

时间:2013-02-01 07:27:05

标签: mysql

好的,我的问题与Counting and grouping same named column in different tables (mysql)类似,但由于它可能会帮助人们在互联网上寻找确切的解决方案(比如我),我将这两个问题分开。

所以我的表看起来与上面的链接类似,有一些新列 表1:

id age gender published
1   10  M       1
2   11  F       1
3   11  F       0

表2:

id table1id age gender
1    2       11   F
2    2       12   M
3    3       12   M

我想对两个表中的行进行计数和分组,其中发布= 1.对于第二个表,它应检查表1中table1id给出的行中的已发布值。表1是表1中表示该行的id表2是表1的子集。因此结果应如下所示:

age count
10  1
11  2
12  1

请注意,表1中的第三行不计算,因为已发布为0.表2中的第三行不计算,因为table1id = 3,这意味着它是表1的第3行的子集(已发布= 0 )

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT age, COUNT(age) cnt
FROM
(
    SELECT
        T2.age 
    FROM Table1 T1
        JOIN Table2 T2
            ON T1.Id = T2.table1id
    WHERE T1.published = 1
    UNION ALL
    SELECT age
    FROM Table1
    WHERE published = 1
) A
GROUP BY age