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

Mysql 对不同表中的同一命名列进行计数和分组(where子句仅来自一个表),mysql,Mysql,好的,我的问题与类似,但因为它可能会帮助人们在互联网上寻找确切的解决方案(像我一样),我将这两个问题分开 因此,我的表与上面链接中的表相似,有一些新的列 表1: 表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的子

好的,我的问题与类似,但因为它可能会帮助人们在互联网上寻找确切的解决方案(像我一样),我将这两个问题分开

因此,我的表与上面链接中的表相似,有一些新的列 表1:

表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中的第三行不计算在内,因为published为0。表2中的第三行不计算在内,因为table1id=3,这意味着它是表1第三行(已发布=0)的子集

谢谢你的帮助:)

试试这个:

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

哇,你真快。。。非常感谢。。。它起作用了!一旦我明白发生了什么,我会把这个作为正确答案,好吗?XD编辑:好的,明白了,谢谢你的帮助:)
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