选择 ID,其中列包含所有值

谢尔盖·维谢洛夫斯基

请帮助我进行 SQL 查询。这是带有数据的测试表:

CREATE TABLE "Cats"
(
    "CatId" SERIAL PRIMARY KEY,
    "Name" character varying NOT NULL
);
CREATE TABLE "Measures"
(
    "MeasureId" SERIAL PRIMARY KEY,
    "CatId" integer NOT NULL REFERENCES "Cats",
    "Weight" double precision NOT NULL,
    "MeasureDay" integer NOT NULL
);

INSERT INTO "Cats" ("Name") VALUES 
    ('A'), ('B'), ('C')
;
INSERT INTO "Measures" ("CatId", "Weight", "MeasureDay") VALUES 
    (1, 5.0, 1),
    (1, 5.3, 2),
    (1, 6.1, 5),
    (2, 3.2, 1),
    (2, 3.5, 2),
    (2, 3.8, 3),
    (2, 4.0, 4),
    (2, 4.0, 5),
    (3, 6.6, 1),
    (3, 6.9, 2),
    (3, 7.0, 3),
    (3, 6.9, 4)
;

如何选择具有所有 5 天度量的 CatId(MeasureDay 取 (1, 2, 3, 4, 5) 中的所有值)?在此测试数据上,查询应返回 2,因为只有 CatId = 2 的 Cat 具有所有天数(1、2、3、4、5)的度量。

我假设我应该使用 GROUP BY "CatId" 和 HAVING 子句,但是在 HAVING 中应该使用什么样的查询?

拉胡尔

尝试这样使用 group by

select CatId 
from Measures
where MeasureDay in  (1, 2, 3, 4, 5)
group by CatId
having count(distinct MeasureDay) = 5;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果某一列包含特定值,则选择具有相同ID的所有行

PostgreSQL选择*其中列包含数组值

MySQL选择所有用户ID,其中'xyz'不是另一个表的列中的值

选择两列包含值组合的所有行

从另一列中选择所有包含值的

选择不同的列A,其中列B包含所有必需的数据?

SQL 从表中选择所有值,其中所有列都填充了数据

选择带有逗号分隔值的列包含ID的位置

MS SQL-从多对多表中选择数据,其中列的值与所有给定值匹配

仅当另一列包含特定值时,如何选择所有行用于特定ID

选择所有列,但忽略其中一些具有重复值的记录

oracle SQL:选择不同的值,其中它的所有记录中不包含另一个特定值

sqlite选择所有行,其中某些列在一组可能的值中

选择不重复的行,其中列中的所有值均是同一SQL Server

MongoDB linq C#选择文档,其中子文档数组包含字符串数组中的所有值

SQL-查找键等于值的所有“关系ID”,然后选择包含那些“关系ID”的所有记录

SQL Server:从动态值列表中选择列不包含任何值的所有行

选择所有包含 NaN 的行,直到出现具有值的列

选择包含所有指示值的 ID(通配符冲突问题)MariaDB

选择所有大于某个值的列

仅当记录包含所有行的相同列值时,才选择记录

在excel中选择在某些列中包含相同值的所有行

熊猫数据框选择所有包含特定字符串值的列

如何在选择查询中忽略声明的临时表列,其中所有字段的列都为 NULL 值

包含所有指定值的 Doctrine 选择元素

选择包含 WHERE IN 子句中所有值的实体

SQL选择行包含间隔中的所有值

在包含空白的列中选择所有数据

选择所有具有重叠时间戳值的 ID