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