mySQL检查所有链接项是否为指定值

hc8w905p  于 2023-02-11  发布在  Mysql
关注(0)|答案(1)|浏览(103)

我想检查是否所有的链接项目都是一个指定的值。我不知道如何正确地解释它,但在我看来,这个例子是相当不言自明的。
示例数据库(简化)

Table Groups
   PK_Groups  int
   Groupname  varchar

Table Person
   PK_Person  int
   Name       varchar
   isAdult    tinyint(1)
   FK_Groups  int

我怎样才能检查哪些组只有成年人(1查询返回所有组)?有没有办法在SQL中做,还是我必须做"手动"?
先谢了

SELECT PK_Groups 
FROM Groups 
INNER JOIN Person on PK_Group = FK_Groups 
WHERE isAdult = 0

在哪里不起作用,因为有一些是成年人
然后按名字分组,并检查成人是否也不工作,因为它在组内
计算每个组的非成年人数量是可行的(如果计数〈= 0),但仅适用于每个组,而不是同时适用于所有组

sg24os4d

sg24os4d1#

检查每组isAdult的最小值,如果他们都是成年人,最小值为1。

SELECT PK_Groups 
FROM Groups 
INNER JOIN Person on PK_Groups = FK_Groups 
GROUP BY PK_Groups
HAVING MIN(isAdult) = 1

请注意,这不是测试集合中所有值是否都是特定值的常用方法,它仅在您尝试检查的值是可能的最大值时有效(您也可以通过将MIN()更改为MAX()来测试最小值)。
更一般的条件可通过以下方式进行测试:

HAVING SUM(column = value) = COUNT(*)

相关问题