0

好的,我的问题类似于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 给出的行中的已发布值。 Table1id 是表 1 中的行的 id,表示表 2 是表 1 的子集。因此结果应如下所示:

age count
10  1
11  2
12  1

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

谢谢你的帮助 :)

4

1 回答 1

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
于 2013-02-01T07:34:44.007 回答