mysql - 如何在mysql中选择具有另一列子集的列?

标签 mysql group-by group-concat

我要处理这个问题的复杂版本 (How to select columns with same set of values in mysql?)。

在关系 R(A,B,C) 中,问题是找出“A 与 4 个或更多常见 B”。仅供引用:“AB”是候选键。

我能做的就是这个

查询:

select * from 
(select A, group_concat (B separator ', ') all_b's from R group by A having
(count(B))>3) p1  
join  
(select A, group_concat (B separator ', ') all_b's from R group by A having
(count(B))>3) p2  
on p1.all_b's = p2.all_b's and p1.A <> p2.A; 

输出:

Null Set

但是,答案应该是别的东西。 知道如何处理这个吗?

示例数据:

A   B   C
a1  b1  asdas  
a1  b2  sdvsd    
a1  b3  sdfs  
a1  b4  evevr  
a2  b1  jdjd  
a2  b2  dkjlfnv  
a2  b3  sdfs  
a2  b4  evevr  
a2  b5  adfgaf  
a3  b1  sdfsdf  

预期输出

A   A  count
a1  a2  4

最佳答案

应该是这样的:

SELECT
    first.A AS first_A,
    second.A AS second_A,
    COUNT(*) AS countSameBs
FROM
    R first
JOIN
    R second ON
    first.B = second.B AND
    first.A != second.A
GROUP BY
    first_A, second_A
HAVING
    countSameBs >= 4 AND
    first_A < second_A

关于mysql - 如何在mysql中选择具有另一列子集的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129129/

相关文章:

ruby-on-rails-3 - Ruby on Rails 使用 PostgreSQL 进行计数和分组

sql - 有没有更好的方法来过滤每个组中存在的数据?

mysql - 如何在存储过程MySQL中使用GROUP_CONCAT

mysql - 不同并不能消除空结果

php - 如何使用codeigniter事件记录在mysql表的单个字段中搜索多个值?

mysql - 如何编写查询来计算具有多个约束和匹配的记录?

mysql - hive 中的等级/组

MySQL 请求 COUNT 问题

java - 这个 java MySQL 异常的原因(和处理)是什么?

php - MySQL Left JOIN Group_concat 性能问题