[SQL]:行的唯一子集,其中列值具有一组值中的每一个

兰德尔·拉瓦特拉(Randhir Rawatlal)

假设我们有一个表,其中包含列c1,c2,c3,...

对于列c2,我对特定值k1,k2,...,kn感兴趣。

考虑行的子集,其中每行具有相同的c1值,并且如果我们在子集中获取c2的值列表,则该列表必须包含所有值k1,k2,...,kn。

我真正想要的是每个此类子集的c1值列表。

[编辑:响应下面的第一条评论:]为了提供一个基本示例,假设我有一个表,其中userid作为列1,而SkillsList作为列2。此表中大约有15种技能。我希望获得具有三种特定技能的所有用户的用户ID,例如[sql,php,js]

我该如何在SQL中拉这个?

塞格

您已经描述了关系划分。https://zh.wikipedia.org/wiki/Relational_algebra

R(c1 PRIMARY KEY, c2, c3)-表
S(col)={ k1, k2, ..., kn}-包含一个设定值,除法器。两种通用方法是NOT EXISTS-用余数除法和COUNT()-精确除法。

SELECT DISTINCT c1
FROM R r1
WHERE NOT EXISTS
       (SELECT *
        FROM S 
        WHERE NOT EXISTS
               (SELECT *
                FROM R AS r2
                WHERE (r1.c1 = r2.c1)
                   AND (r2.c2 = S.col)));

SELECT r1.c1
FROM R AS r1,
JOIN S AS s1 ON r1.c2 = s1.col
GROUP BY r1.c1
HAVING COUNT(r1.c2) = (SELECT COUNT(s2.col) FROM S s2);

有关更多方法,请参见https://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅提取具有R中列值的唯一组合的那些行

查询表中具有一个值但没有另一个值的所有唯一组合

连接两个数据框,其中列值(一组)是另一个的子集

将数据集子集仅包含R中具有2个或多个唯一子组的组

为大表中的一个特定列选择具有唯一值的行

SQL选择具有可互换值的两列的唯一组合

2 列的唯一约束,其中一个具有特定值

熊猫:计算具有NaN值的四列中的唯一组合

返回同一组中具有上一行值的行(Oracle Sql)

SQL返回一组列中不为null的最后一个列值

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

在data.frame中选择行,其中某一列的值包含一组前缀中的一个

SQL选择在另一列中具有至少一个特定值的所有非唯一行

Oracle SQL选择唯一值AND匹配非唯一值的行中只有一个值

从联接两个表中获得唯一值,其中一个表可能具有特定列的重复值

在bash中,如何确定一组变量中只有一个具有值?

如何在 Postgres 表中插入一个具有一个键的 hstore 值和一组作为对应值的值?

两列SQL的唯一组合值

筛选在另一个值上具有非唯一ID的SQL行

在 r 的新列中创建一个具有唯一值总计的新列

从一组重复项中查找一个值以分配给唯一值

在两列中查找具有重复值的行,其中一列中的至少一个值是特定值

使用同一组中满足条件的下一个第一行设置列值

具有混合值的两列的唯一组合

在 python Pandas 中创建一个具有唯一值的新列 - 无需分组

如何从共享两个公共列的一组行中选择一列中具有最大值的熊猫行?

从上一行中减去具有DataFrame中上一组值的行

在所有具有特定列值的行中选择一个唯一值

从 DataFrame 中删除一列中仅包含一个唯一值的组