Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询分组依据和具有所有_Mysql_Sql_Database_Group By_Self Join - Fatal编程技术网

Mysql SQL查询分组依据和具有所有

Mysql SQL查询分组依据和具有所有,mysql,sql,database,group-by,self-join,Mysql,Sql,Database,Group By,Self Join,我有一张桌子: Parent Child Educated 'P1', 'C1', 'YES' 'P1', 'C2', 'YES' 'P1', 'C3', 'NO' 'P2', 'C11', 'YES' 'P2', 'C12', 'NO' 'P3', 'C21', 'YES' 'P3', 'C22', 'YES' 'P4', 'C31', 'NO' 'P4', 'C32', 'NO' 现在,我需要找到所有的父母,他们的孩子都受过教育,也就是说,受过教育 与上述情况类似,父级“P3” 是否有人可

我有一张桌子:

Parent Child Educated
'P1', 'C1', 'YES'
'P1', 'C2', 'YES'
'P1', 'C3', 'NO'
'P2', 'C11', 'YES'
'P2', 'C12', 'NO'
'P3', 'C21', 'YES'
'P3', 'C22', 'YES'
'P4', 'C31', 'NO'
'P4', 'C32', 'NO'
现在,我需要找到所有的父母,他们的孩子都受过教育,也就是说,受过教育

与上述情况类似,父级“P3”

是否有人可以建议查询从[YourTable]获取此信息
select parent, 
       sum(case when educated='YES' then 1 else 0 end) as sum_educated,
       count(*) as count_all
from t
group by parent
having count_all=sum_educated
哪里受过教育=‘是’

如果只希望显示父列 然后从[YourTable]中选择Parent
where Educated='Yes'

查找任何记录为'No'的家长,并使用
NOT IN
从结果中删除这些记录:

SELECT parent
FROM table
WHERE parent NOT IN (SELECT parent FROM table WHERE Educated = 'No')
GROUP BY parent
我会这样做:

select parent
from t
group by parent
having max(educated) = min(educated) and max(educated) = 'YES';
如果
可能为
NULL
,则逻辑会稍微复杂一些

实际上,如果值只是
'YES'
'NO'
,则可以执行更简单的操作:

select parent
from t
group by parent
having min(educated) = 'YES';

找到那些没有孩子接受教育的人='no'*在MySQL中,家长的所有孩子都是“是”的,你实际上不需要这个案例。你妈妈没有告诉过你“不要在中使用比你准备手写的列表更长的
”?:)答案的第二部分使我很反感。这不仅仅是一条捷径,而是另一种情况,小心!