Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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集群查询_Mysql_Sql - Fatal编程技术网

Mysql集群查询

Mysql集群查询,mysql,sql,Mysql,Sql,我有一张如下表: ID Output ------------------------- 01ABC1 AB 01ABC2 AB 01ABC3 AB 02ABC1 AC 02ABC2 AC 02ABC3 AB 我必须计算具有相同前两位数且输出一致的ID集的数量。 例如在这种情况下 01ABC1,01ABC2和01ABC3的输出相同,但

我有一张如下表:

ID                Output
-------------------------
01ABC1            AB
01ABC2            AB
01ABC3            AB
02ABC1            AC
02ABC2            AC
02ABC3            AB
我必须计算具有相同前两位数且输出一致的ID集的数量。 例如在这种情况下
01ABC1,01ABC2和01ABC3的输出相同,但
02ABC1,02ABC2和02ABC3的输出不同。
因此答案将是
1
set

输出应该是

ID                Count(ID)
---------------------------    
01ABC            1
02ABC            0

如果所说的“一致”
是指
对于共享相同前2位的给定ID集,所有输出都相同,则此查询将完成以下工作:

select count(*) from (
    select count(distinct output) aCount from t
    group by left(id, 2)
    having aCount = 1
) final
附言:你已经编辑了你的问题。这将回答您的第二次编辑。。。具有此预期结果的:

The output should be
    Count(ID)
    1

这应该对你有用。如果没有,我相信我们可以为您调整

SELECT count(*) FROM
(
SELECT count(*), digits, Output FROM
(SELECT SUBSTRING(ID, 1, 2) AS digits, Output from `table` GROUP BY 1, 2) AS sub_groups
GROUP BY digits HAVING COUNT(*) = 1
) AS sets
;
从左侧(id,2)的表\u name group中选择id、count(不同的输出)、group\u concat(不同的输出)。
输出是您想要的。只需假设2为0。

请发布您得到的查询,以便所需的输出应该是Count(ID)1@AmitBhargava我过一会儿再发。我的实际数据库与我在这里发布的数据库有些不同。这是一种更简单的形式。我真的不明白你的意思。以表格形式发布你的o/p。我基本上在挣扎的是如何比较同一个表中的多行MySQL强制你为派生表命名:(whatsacount.I不返回任何记录。示例中,您的数据加上另一组匹配的行,因此结果为2。