好的,我的问题与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 )
感谢您的帮助:)
答案 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